clanker-sdk
Version:
SDK for deploying tokens using Clanker
3,079 lines • 110 kB
TypeScript
import * as viem from 'viem';
import { Abi, WalletClient, Transport, Chain, Account, PublicClient } from 'viem';
import { C as ClankerError } from '../errors-5Gv28Tkr.js';
/**
* Clanker factory addresses on Base by version
*/
declare const LEGACY_FACTORIES: {
readonly 0: "0x250c9FB2b411B48273f69879007803790A6AeA47";
readonly 1: "0x9B84fcE5Dcd9a38d2D01d5D72373F6b6b067c3e1";
readonly 2: "0x732560fa1d1A76350b1A500155BA978031B53833";
readonly 3: "0x375C15db32D28cEcdcAB5C03Ab889bf15cbD2c5E";
readonly 3.1: "0x2A787b2362021cC3eEa3C24C4748a6cD5B687382";
};
type LegacyVersion = 0 | 1 | 2 | 3 | 3.1;
type LegacyFeeClaimsConfig$1 = {
wallet?: WalletClient<Transport, Chain, Account>;
publicClient?: PublicClient;
};
/**
* Transaction config for legacy fee claiming.
* Compatible with walletClient.writeContract()
*/
type LegacyClaimTransactionConfig = {
address: `0x${string}`;
abi: Abi;
functionName: string;
args: readonly unknown[];
};
/**
* v0/v1 locker params - required for versions 0 and 1
*/
type LockerParams = {
/** The locker contract address that holds the LP position */
locker: `0x${string}`;
/** The Uniswap V3 position NFT ID */
positionId: bigint;
/** The address to receive the fees */
recipient: `0x${string}`;
};
/**
* Input for claiming legacy creator fees.
*
* For v2/v3/v3.1: Only `token` and `version` are required.
* For v0/v1: Additional `lockerParams` are required.
*/
type ClaimLegacyCreatorFeesInput = {
/** The Clanker token address */
token: `0x${string}`;
/** Token version */
version: 2 | 3 | 3.1;
} | {
/** The Clanker token address */
token: `0x${string}`;
/** Token version */
version: 0 | 1;
/** Required for v0/v1: locker info from TokenCreated event */
lockerParams: LockerParams;
};
/**
* Legacy Creator Fee Claims for Clanker v0–v3.1 on Base.
*
* @example
* ```ts
* const clanker = new LegacyCreatorFees({ wallet, publicClient });
*
* // v2/v3/v3.1 - simple!
* await clanker.claimLegacyCreatorFees({ token: '0x...', version: 3.1 });
*
* // v0/v1 - need locker info
* await clanker.claimLegacyCreatorFees({
* token: '0x...',
* version: 1,
* lockerParams: { locker: '0x...', positionId: 123n, recipient: '0x...' }
* });
* ```
*/
declare class LegacyCreatorFees {
readonly wallet?: WalletClient<Transport, Chain, Account>;
readonly publicClient?: PublicClient;
constructor(config?: LegacyFeeClaimsConfig$1);
private assertBase;
/**
* Get a transaction config for claiming legacy creator fees.
*
* @param input Token address, version, and locker params (for v0/v1)
* @returns Transaction config
*/
getClaimLegacyCreatorFeesTransaction(input: ClaimLegacyCreatorFeesInput): LegacyClaimTransactionConfig;
/**
* Get a transaction config for claiming via meta-locker (some v0 tokens).
*
* @param locker The locker contract address
* @param positionId The Uniswap V3 position NFT ID
* @returns Transaction config
*/
getMetaLockerClaimTransaction(locker: `0x${string}`, positionId: bigint): LegacyClaimTransactionConfig;
/**
* Simulate claiming legacy creator fees.
*
* @param input Token address, version, and locker params (for v0/v1)
* @param account Optional account to simulate from
* @returns Simulation result or error
*/
claimLegacyCreatorFeesSimulate(input: ClaimLegacyCreatorFeesInput, account?: Account): Promise<viem.SimulateContractReturnType<Abi | readonly unknown[], string, readonly unknown[], Chain | undefined, undefined, undefined, undefined, readonly [never], undefined> | {
error: ClankerError;
}>;
/**
* Claim legacy creator fees.
*
* @param input Token address, version, and locker params (for v0/v1)
* @returns Transaction hash or error
*/
claimLegacyCreatorFees(input: ClaimLegacyCreatorFeesInput): Promise<{
txHash: `0x${string}`;
error: undefined;
} | {
txHash: undefined;
error: ClankerError;
}>;
}
/**
* Get a transaction config for claiming legacy creator fees.
*
* @param input Token address, version, and locker params (for v0/v1)
* @returns Transaction config
*
* @example
* ```ts
* // v3.1 token - simple
* const tx = getClaimLegacyCreatorFeesTransaction({
* token: '0x...',
* version: 3.1
* });
*
* // v1 token - need locker info
* const tx = getClaimLegacyCreatorFeesTransaction({
* token: '0x...',
* version: 1,
* lockerParams: { locker: '0x...', positionId: 123n, recipient: '0x...' }
* });
*
* await walletClient.writeContract(tx);
* ```
*/
declare function getClaimLegacyCreatorFeesTransaction(input: ClaimLegacyCreatorFeesInput): LegacyClaimTransactionConfig;
/**
* Base chain ID
*/
declare const BASE_CHAIN_ID: 8453;
/**
* Uniswap V3 addresses on Base
*/
declare const UNISWAP_V3_BASE: {
readonly factory: "0x33128a8fC17869897dcE68Ed026d694621f6FDfD";
readonly nonfungiblePositionManager: "0x03a520b32C04BF3bEEf7BEb72E919cf822Ed34f1";
readonly weth: "0x4200000000000000000000000000000000000006";
};
/**
* Clanker factories on Base (v0–v3.1)
*/
declare const CLANKER_FACTORIES_BASE: {
readonly clanker_v0: "0x250c9FB2b411B48273f69879007803790A6AeA47";
readonly clanker_v1: "0x9B84fcE5Dcd9a38d2D01d5D72373F6b6b067c3e1";
readonly clanker_v2: "0x732560fa1d1A76350b1A500155BA978031B53833";
readonly clanker_v3: "0x375C15db32D28cEcdcAB5C03Ab889bf15cbD2c5E";
readonly clanker_v3_presale: "0x71cDc0bDF30F5601fb0ac80Cf1d20B771342C035";
readonly clanker_v3_1: "0x2A787b2362021cC3eEa3C24C4748a6cD5B687382";
};
/**
* Legacy token type labels for v0–v3.1
*/
type LegacyTokenType = 'proxy' | 'clanker' | 'clanker_v2' | 'clanker_v3' | 'clanker_v3_1';
declare const ClankerClaimRewardsAbi: readonly [{
readonly type: "function";
readonly name: "claimRewards";
readonly stateMutability: "nonpayable";
readonly inputs: readonly [{
readonly name: "token";
readonly type: "address";
}];
readonly outputs: readonly [];
}];
declare const LockerCollectFeesAbi: readonly [{
readonly type: "function";
readonly name: "collectFees";
readonly stateMutability: "nonpayable";
readonly inputs: readonly [{
readonly name: "_recipient";
readonly type: "address";
}, {
readonly name: "_tokenId";
readonly type: "uint256";
}];
readonly outputs: readonly [];
}];
declare const MetaLockerCollectFeesAbi: readonly [{
readonly type: "function";
readonly name: "collectFees";
readonly stateMutability: "nonpayable";
readonly inputs: readonly [{
readonly name: "_tokenId";
readonly type: "uint256";
}];
readonly outputs: readonly [];
}];
declare const ClankerTokenDeployerAbi: readonly [{
readonly type: "function";
readonly name: "deployer";
readonly stateMutability: "view";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "address";
}];
}];
declare const NonfungiblePositionManagerOwnerOfAbi: readonly [{
readonly type: "function";
readonly name: "ownerOf";
readonly stateMutability: "view";
readonly inputs: readonly [{
readonly name: "tokenId";
readonly type: "uint256";
}];
readonly outputs: readonly [{
readonly name: "";
readonly type: "address";
}];
}];
declare const NonfungiblePositionManagerPositionsAbi: readonly [{
readonly type: "function";
readonly name: "positions";
readonly stateMutability: "view";
readonly inputs: readonly [{
readonly name: "tokenId";
readonly type: "uint256";
}];
readonly outputs: readonly [{
readonly name: "nonce";
readonly type: "uint96";
}, {
readonly name: "operator";
readonly type: "address";
}, {
readonly name: "token0";
readonly type: "address";
}, {
readonly name: "token1";
readonly type: "address";
}, {
readonly name: "fee";
readonly type: "uint24";
}, {
readonly name: "tickLower";
readonly type: "int24";
}, {
readonly name: "tickUpper";
readonly type: "int24";
}, {
readonly name: "liquidity";
readonly type: "uint128";
}, {
readonly name: "feeGrowthInside0LastX128";
readonly type: "uint256";
}, {
readonly name: "feeGrowthInside1LastX128";
readonly type: "uint256";
}, {
readonly name: "tokensOwed0";
readonly type: "uint128";
}, {
readonly name: "tokensOwed1";
readonly type: "uint128";
}];
}];
declare const NonfungiblePositionManagerCollectAbi: readonly [{
readonly type: "function";
readonly name: "collect";
readonly stateMutability: "payable";
readonly inputs: readonly [{
readonly name: "params";
readonly type: "tuple";
readonly components: readonly [{
readonly name: "tokenId";
readonly type: "uint256";
}, {
readonly name: "recipient";
readonly type: "address";
}, {
readonly name: "amount0Max";
readonly type: "uint128";
}, {
readonly name: "amount1Max";
readonly type: "uint128";
}];
}];
readonly outputs: readonly [{
readonly name: "amount0";
readonly type: "uint256";
}, {
readonly name: "amount1";
readonly type: "uint256";
}];
}];
/**
* Contract address for ClankerSafeErc20Spender on Base network
*/
declare const LEGACY_FEE_CLAIMS_ADDRESS: "0x10F4485d6f90239B72c6A5eaD2F2320993D285E4";
type LegacyFeeClaimsConfig = {
wallet?: WalletClient<Transport, Chain, Account>;
publicClient?: PublicClient;
};
/**
* Input arguments for building a legacy fee claim transaction
*/
type LegacyClaimArgs = {
/** Must be 8453 (Base) */
chainId: number;
/** The Clanker token contract address */
token: `0x${string}`;
/** Token type label (proxy, clanker, clanker_v2, clanker_v3, clanker_v3_1) */
tokenType?: LegacyTokenType;
/** Factory address (required for v2–v3.1 factory claim) */
factory?: `0x${string}`;
/** Locker address (required for v0–v1 locker claim) */
locker?: `0x${string}`;
/** Uniswap V3 position NFT ID (required for v0–v1 claim and claimable estimation) */
positionId?: bigint;
/** Recipient address (required for Locker.collectFees) */
recipient?: `0x${string}`;
/** Wallet address for v1 deployer gating and optional simulate account */
walletAddress?: `0x${string}`;
};
/** @deprecated Use LegacyClaimArgs instead */
type LegacyClaimFeesInput = LegacyClaimArgs;
/**
* Transaction kind for legacy fee claims
*/
type LegacyClaimTxKind = 'factory.claimRewards' | 'locker.collectFees' | 'metaLocker.collectFees';
/**
* Transaction output for legacy fee claims
*/
type LegacyClaimTx = {
kind: LegacyClaimTxKind;
to: `0x${string}`;
data: `0x${string}`;
value?: bigint;
};
/** @deprecated Use LegacyClaimTx instead */
type LegacyClaimFeesTransaction = LegacyClaimTx;
/**
* Result of estimating claimable fees
*/
type LegacyClaimableFees = {
positionOwner: `0x${string}`;
token0: `0x${string}`;
token1: `0x${string}`;
amount0: bigint;
amount1: bigint;
};
/**
* SDK for claiming legacy fees from Clanker v0-v3.1 tokens.
*
* Creators of Clankers v0-v3.1 can claim their returned fees by interacting
* with the ClankerSafeErc20Spender contract.
*
* Creators have three main actions:
* 1. Initialize their ownership of the token's fees, with optional ability to set a different admin key
* 2. Update the admin key that can trigger claims
* 3. Claim the generated fees for their token
*/
declare class LegacyFeeClaims {
readonly wallet?: WalletClient<Transport, Chain, Account>;
readonly publicClient?: PublicClient;
constructor(config?: LegacyFeeClaimsConfig);
private assertBaseChain;
/**
* Build a Base-only transaction for claiming legacy fees (v0-v3.1).
*
* @param args Claim arguments
* @returns Transaction object with { kind, to, data, value? }
*/
getClaimLegacyFeesTransaction(args: LegacyClaimArgs): Promise<LegacyClaimTx>;
/**
* Estimate claimable Uniswap v3 LP fees for a legacy position on Base.
*
* @param opts Options with chainId and positionId
* @returns Claimable fees with position owner, token0, token1, amount0, amount1
*/
getLegacyClaimableFees(opts: {
chainId: number;
positionId: bigint;
}): Promise<LegacyClaimableFees>;
/**
* Get an abi-typed transaction for initializing token creator ownership.
*
* This must be called once per token by the original creator to claim ownership
* of the token's fees. During this call, the creator can optionally set a different
* admin key to manage the token's rewards.
*
* @param token The token address to initialize a creator for
* @param newCreator The address to set as the creator for this token (can be different from msg.sender)
* @param proof The Merkle proof demonstrating msg.sender is authorized for this token
* @returns Abi transaction config
*/
getInitializeTokenCreatorTransaction({ token, newCreator, proof, }: {
token: `0x${string}`;
newCreator: `0x${string}`;
proof: `0x${string}`[];
}): {
address: "0x10F4485d6f90239B72c6A5eaD2F2320993D285E4";
abi: readonly [{
readonly type: "constructor";
readonly inputs: readonly [{
readonly name: "owner_";
readonly type: "address";
readonly internalType: "address";
}, {
readonly name: "teamSpender_";
readonly type: "address";
readonly internalType: "address";
}, {
readonly name: "teamGrantedTokens_";
readonly type: "address[]";
readonly internalType: "address[]";
}];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "initializeTokenCreator";
readonly inputs: readonly [{
readonly name: "token";
readonly type: "address";
readonly internalType: "address";
}, {
readonly name: "newCreator";
readonly type: "address";
readonly internalType: "address";
}, {
readonly name: "proof";
readonly type: "bytes32[]";
readonly internalType: "bytes32[]";
}];
readonly outputs: readonly [];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "owner";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "address";
readonly internalType: "address";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "renounceOwnership";
readonly inputs: readonly [];
readonly outputs: readonly [];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "setTeamSpender";
readonly inputs: readonly [{
readonly name: "teamSpender_";
readonly type: "address";
readonly internalType: "address";
}];
readonly outputs: readonly [];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "setTokenCreatorRoot";
readonly inputs: readonly [{
readonly name: "tokenCreatorRoot_";
readonly type: "bytes32";
readonly internalType: "bytes32";
}];
readonly outputs: readonly [];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "teamGrantedTokens";
readonly inputs: readonly [{
readonly name: "";
readonly type: "uint256";
readonly internalType: "uint256";
}];
readonly outputs: readonly [{
readonly name: "";
readonly type: "address";
readonly internalType: "address";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "teamGrantedTokensMap";
readonly inputs: readonly [{
readonly name: "token";
readonly type: "address";
readonly internalType: "address";
}];
readonly outputs: readonly [{
readonly name: "teamGranted";
readonly type: "bool";
readonly internalType: "bool";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "teamSpender";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "address";
readonly internalType: "address";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "teamTransfer";
readonly inputs: readonly [{
readonly name: "safe";
readonly type: "address";
readonly internalType: "address";
}, {
readonly name: "token";
readonly type: "address";
readonly internalType: "address";
}, {
readonly name: "recipient";
readonly type: "address";
readonly internalType: "address";
}, {
readonly name: "amount";
readonly type: "uint256";
readonly internalType: "uint256";
}];
readonly outputs: readonly [];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "teamTransferEth";
readonly inputs: readonly [{
readonly name: "safe";
readonly type: "address";
readonly internalType: "address";
}];
readonly outputs: readonly [];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "tokenCreator";
readonly inputs: readonly [{
readonly name: "token";
readonly type: "address";
readonly internalType: "address";
}];
readonly outputs: readonly [{
readonly name: "creator";
readonly type: "address";
readonly internalType: "address";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "tokenCreatorRoot";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "bytes32";
readonly internalType: "bytes32";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "tokenCreatorTransfer";
readonly inputs: readonly [{
readonly name: "safe";
readonly type: "address";
readonly internalType: "address";
}, {
readonly name: "token";
readonly type: "address";
readonly internalType: "address";
}, {
readonly name: "recipient";
readonly type: "address";
readonly internalType: "address";
}];
readonly outputs: readonly [];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "transferOwnership";
readonly inputs: readonly [{
readonly name: "newOwner";
readonly type: "address";
readonly internalType: "address";
}];
readonly outputs: readonly [];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "updateTokenCreator";
readonly inputs: readonly [{
readonly name: "token";
readonly type: "address";
readonly internalType: "address";
}, {
readonly name: "newCreator";
readonly type: "address";
readonly internalType: "address";
}];
readonly outputs: readonly [];
readonly stateMutability: "nonpayable";
}, {
readonly type: "event";
readonly name: "InitializeTokenCreator";
readonly inputs: readonly [{
readonly name: "token";
readonly type: "address";
readonly indexed: false;
readonly internalType: "address";
}, {
readonly name: "initializer";
readonly type: "address";
readonly indexed: false;
readonly internalType: "address";
}, {
readonly name: "creator";
readonly type: "address";
readonly indexed: false;
readonly internalType: "address";
}];
readonly anonymous: false;
}, {
readonly type: "event";
readonly name: "OwnershipTransferred";
readonly inputs: readonly [{
readonly name: "previousOwner";
readonly type: "address";
readonly indexed: true;
readonly internalType: "address";
}, {
readonly name: "newOwner";
readonly type: "address";
readonly indexed: true;
readonly internalType: "address";
}];
readonly anonymous: false;
}, {
readonly type: "event";
readonly name: "SetTeamSpender";
readonly inputs: readonly [{
readonly name: "previousTeamSpender";
readonly type: "address";
readonly indexed: true;
readonly internalType: "address";
}, {
readonly name: "newTeamSpender";
readonly type: "address";
readonly indexed: true;
readonly internalType: "address";
}];
readonly anonymous: false;
}, {
readonly type: "event";
readonly name: "SetTokenCreatorRoot";
readonly inputs: readonly [{
readonly name: "tokenCreatorRoot";
readonly type: "bytes32";
readonly indexed: false;
readonly internalType: "bytes32";
}];
readonly anonymous: false;
}, {
readonly type: "event";
readonly name: "Transfer";
readonly inputs: readonly [{
readonly name: "safe";
readonly type: "address";
readonly indexed: true;
readonly internalType: "address";
}, {
readonly name: "token";
readonly type: "address";
readonly indexed: true;
readonly internalType: "address";
}, {
readonly name: "amount";
readonly type: "uint256";
readonly indexed: false;
readonly internalType: "uint256";
}, {
readonly name: "spender";
readonly type: "address";
readonly indexed: false;
readonly internalType: "address";
}, {
readonly name: "recipient";
readonly type: "address";
readonly indexed: true;
readonly internalType: "address";
}];
readonly anonymous: false;
}, {
readonly type: "event";
readonly name: "UpdateTokenCreator";
readonly inputs: readonly [{
readonly name: "token";
readonly type: "address";
readonly indexed: false;
readonly internalType: "address";
}, {
readonly name: "previousCreator";
readonly type: "address";
readonly indexed: false;
readonly internalType: "address";
}, {
readonly name: "newCreator";
readonly type: "address";
readonly indexed: false;
readonly internalType: "address";
}];
readonly anonymous: false;
}, {
readonly type: "error";
readonly name: "InsufficientBalance";
readonly inputs: readonly [{
readonly name: "safe";
readonly type: "address";
readonly internalType: "address";
}, {
readonly name: "token";
readonly type: "address";
readonly internalType: "address";
}, {
readonly name: "balance";
readonly type: "uint256";
readonly internalType: "uint256";
}];
}, {
readonly type: "error";
readonly name: "InvalidProof";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "NotAuthorizedToSpend";
readonly inputs: readonly [{
readonly name: "sender";
readonly type: "address";
readonly internalType: "address";
}, {
readonly name: "token";
readonly type: "address";
readonly internalType: "address";
}];
}, {
readonly type: "error";
readonly name: "OwnableInvalidOwner";
readonly inputs: readonly [{
readonly name: "owner";
readonly type: "address";
readonly internalType: "address";
}];
}, {
readonly type: "error";
readonly name: "OwnableUnauthorizedAccount";
readonly inputs: readonly [{
readonly name: "account";
readonly type: "address";
readonly internalType: "address";
}];
}, {
readonly type: "error";
readonly name: "TokenCreatorAlreadyInitialized";
readonly inputs: readonly [{
readonly name: "token";
readonly type: "address";
readonly internalType: "address";
}, {
readonly name: "delegate";
readonly type: "address";
readonly internalType: "address";
}];
}, {
readonly type: "error";
readonly name: "TokenCreatorRootAlreadySet";
readonly inputs: readonly [{
readonly name: "tokenCreatorRoot";
readonly type: "bytes32";
readonly internalType: "bytes32";
}];
}, {
readonly type: "error";
readonly name: "TokenCreatorRootNotSet";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "Unauthorized";
readonly inputs: readonly [{
readonly name: "unauthorized";
readonly type: "address";
readonly internalType: "address";
}];
}];
functionName: "initializeTokenCreator";
args: readonly [`0x${string}`, `0x${string}`, `0x${string}`[]];
};
/**
* Simulate initializing token creator ownership.
*
* @param token The token address to initialize a creator for
* @param newCreator The address to set as the creator for this token
* @param proof The Merkle proof demonstrating msg.sender is authorized for this token
* @param account Optional account to simulate calling for
* @returns The simulated output
*/
initializeTokenCreatorSimulate({ token, newCreator, proof, }: {
token: `0x${string}`;
newCreator: `0x${string}`;
proof: `0x${string}`[];
}, account?: Account): Promise<any>;
/**
* Initialize token creator ownership to enable fee claims.
*
* This must be called once per token by the original creator. The proof must be
* obtained from the Clanker team or frontend. During initialization, you can
* optionally set a different admin address to manage future claims.
*
* @param token The token address to initialize a creator for
* @param newCreator The address to set as the creator for this token (can be different from msg.sender)
* @param proof The Merkle proof demonstrating msg.sender is authorized for this token
* @returns Transaction hash or error
*/
initializeTokenCreator({ token, newCreator, proof, }: {
token: `0x${string}`;
newCreator: `0x${string}`;
proof: `0x${string}`[];
}): Promise<{
txHash: `0x${string}`;
error: undefined;
} | {
txHash: undefined;
error: ClankerError;
}>;
/**
* Get an abi-typed transaction for updating the token creator admin address.
*
* This allows the current creator to change the address that can trigger claims.
* Only callable by the current creator address for the specified token.
*
* @param token The token address to update the creator for
* @param newCreator The new creator/admin address
* @returns Abi transaction config
*/
getUpdateTokenCreatorTransaction({ token, newCreator, }: {
token: `0x${string}`;
newCreator: `0x${string}`;
}): {
address: "0x10F4485d6f90239B72c6A5eaD2F2320993D285E4";
abi: readonly [{
readonly type: "constructor";
readonly inputs: readonly [{
readonly name: "owner_";
readonly type: "address";
readonly internalType: "address";
}, {
readonly name: "teamSpender_";
readonly type: "address";
readonly internalType: "address";
}, {
readonly name: "teamGrantedTokens_";
readonly type: "address[]";
readonly internalType: "address[]";
}];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "initializeTokenCreator";
readonly inputs: readonly [{
readonly name: "token";
readonly type: "address";
readonly internalType: "address";
}, {
readonly name: "newCreator";
readonly type: "address";
readonly internalType: "address";
}, {
readonly name: "proof";
readonly type: "bytes32[]";
readonly internalType: "bytes32[]";
}];
readonly outputs: readonly [];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "owner";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "address";
readonly internalType: "address";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "renounceOwnership";
readonly inputs: readonly [];
readonly outputs: readonly [];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "setTeamSpender";
readonly inputs: readonly [{
readonly name: "teamSpender_";
readonly type: "address";
readonly internalType: "address";
}];
readonly outputs: readonly [];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "setTokenCreatorRoot";
readonly inputs: readonly [{
readonly name: "tokenCreatorRoot_";
readonly type: "bytes32";
readonly internalType: "bytes32";
}];
readonly outputs: readonly [];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "teamGrantedTokens";
readonly inputs: readonly [{
readonly name: "";
readonly type: "uint256";
readonly internalType: "uint256";
}];
readonly outputs: readonly [{
readonly name: "";
readonly type: "address";
readonly internalType: "address";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "teamGrantedTokensMap";
readonly inputs: readonly [{
readonly name: "token";
readonly type: "address";
readonly internalType: "address";
}];
readonly outputs: readonly [{
readonly name: "teamGranted";
readonly type: "bool";
readonly internalType: "bool";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "teamSpender";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "address";
readonly internalType: "address";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "teamTransfer";
readonly inputs: readonly [{
readonly name: "safe";
readonly type: "address";
readonly internalType: "address";
}, {
readonly name: "token";
readonly type: "address";
readonly internalType: "address";
}, {
readonly name: "recipient";
readonly type: "address";
readonly internalType: "address";
}, {
readonly name: "amount";
readonly type: "uint256";
readonly internalType: "uint256";
}];
readonly outputs: readonly [];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "teamTransferEth";
readonly inputs: readonly [{
readonly name: "safe";
readonly type: "address";
readonly internalType: "address";
}];
readonly outputs: readonly [];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "tokenCreator";
readonly inputs: readonly [{
readonly name: "token";
readonly type: "address";
readonly internalType: "address";
}];
readonly outputs: readonly [{
readonly name: "creator";
readonly type: "address";
readonly internalType: "address";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "tokenCreatorRoot";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "bytes32";
readonly internalType: "bytes32";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "tokenCreatorTransfer";
readonly inputs: readonly [{
readonly name: "safe";
readonly type: "address";
readonly internalType: "address";
}, {
readonly name: "token";
readonly type: "address";
readonly internalType: "address";
}, {
readonly name: "recipient";
readonly type: "address";
readonly internalType: "address";
}];
readonly outputs: readonly [];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "transferOwnership";
readonly inputs: readonly [{
readonly name: "newOwner";
readonly type: "address";
readonly internalType: "address";
}];
readonly outputs: readonly [];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "updateTokenCreator";
readonly inputs: readonly [{
readonly name: "token";
readonly type: "address";
readonly internalType: "address";
}, {
readonly name: "newCreator";
readonly type: "address";
readonly internalType: "address";
}];
readonly outputs: readonly [];
readonly stateMutability: "nonpayable";
}, {
readonly type: "event";
readonly name: "InitializeTokenCreator";
readonly inputs: readonly [{
readonly name: "token";
readonly type: "address";
readonly indexed: false;
readonly internalType: "address";
}, {
readonly name: "initializer";
readonly type: "address";
readonly indexed: false;
readonly internalType: "address";
}, {
readonly name: "creator";
readonly type: "address";
readonly indexed: false;
readonly internalType: "address";
}];
readonly anonymous: false;
}, {
readonly type: "event";
readonly name: "OwnershipTransferred";
readonly inputs: readonly [{
readonly name: "previousOwner";
readonly type: "address";
readonly indexed: true;
readonly internalType: "address";
}, {
readonly name: "newOwner";
readonly type: "address";
readonly indexed: true;
readonly internalType: "address";
}];
readonly anonymous: false;
}, {
readonly type: "event";
readonly name: "SetTeamSpender";
readonly inputs: readonly [{
readonly name: "previousTeamSpender";
readonly type: "address";
readonly indexed: true;
readonly internalType: "address";
}, {
readonly name: "newTeamSpender";
readonly type: "address";
readonly indexed: true;
readonly internalType: "address";
}];
readonly anonymous: false;
}, {
readonly type: "event";
readonly name: "SetTokenCreatorRoot";
readonly inputs: readonly [{
readonly name: "tokenCreatorRoot";
readonly type: "bytes32";
readonly indexed: false;
readonly internalType: "bytes32";
}];
readonly anonymous: false;
}, {
readonly type: "event";
readonly name: "Transfer";
readonly inputs: readonly [{
readonly name: "safe";
readonly type: "address";
readonly indexed: true;
readonly internalType: "address";
}, {
readonly name: "token";
readonly type: "address";
readonly indexed: true;
readonly internalType: "address";
}, {
readonly name: "amount";
readonly type: "uint256";
readonly indexed: false;
readonly internalType: "uint256";
}, {
readonly name: "spender";
readonly type: "address";
readonly indexed: false;
readonly internalType: "address";
}, {
readonly name: "recipient";
readonly type: "address";
readonly indexed: true;
readonly internalType: "address";
}];
readonly anonymous: false;
}, {
readonly type: "event";
readonly name: "UpdateTokenCreator";
readonly inputs: readonly [{
readonly name: "token";
readonly type: "address";
readonly indexed: false;
readonly internalType: "address";
}, {
readonly name: "previousCreator";
readonly type: "address";
readonly indexed: false;
readonly internalType: "address";
}, {
readonly name: "newCreator";
readonly type: "address";
readonly indexed: false;
readonly internalType: "address";
}];
readonly anonymous: false;
}, {
readonly type: "error";
readonly name: "InsufficientBalance";
readonly inputs: readonly [{
readonly name: "safe";
readonly type: "address";
readonly internalType: "address";
}, {
readonly name: "token";
readonly type: "address";
readonly internalType: "address";
}, {
readonly name: "balance";
readonly type: "uint256";
readonly internalType: "uint256";
}];
}, {
readonly type: "error";
readonly name: "InvalidProof";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "NotAuthorizedToSpend";
readonly inputs: readonly [{
readonly name: "sender";
readonly type: "address";
readonly internalType: "address";
}, {
readonly name: "token";
readonly type: "address";
readonly internalType: "address";
}];
}, {
readonly type: "error";
readonly name: "OwnableInvalidOwner";
readonly inputs: readonly [{
readonly name: "owner";
readonly type: "address";
readonly internalType: "address";
}];
}, {
readonly type: "error";
readonly name: "OwnableUnauthorizedAccount";
readonly inputs: readonly [{
readonly name: "account";
readonly type: "address";
readonly internalType: "address";
}];
}, {
readonly type: "error";
readonly name: "TokenCreatorAlreadyInitialized";
readonly inputs: readonly [{
readonly name: "token";
readonly type: "address";
readonly internalType: "address";
}, {
readonly name: "delegate";
readonly type: "address";
readonly internalType: "address";
}];
}, {
readonly type: "error";
readonly name: "TokenCreatorRootAlreadySet";
readonly inputs: readonly [{
readonly name: "tokenCreatorRoot";
readonly type: "bytes32";
readonly internalType: "bytes32";
}];
}, {
readonly type: "error";
readonly name: "TokenCreatorRootNotSet";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "Unauthorized";
readonly inputs: readonly [{
readonly name: "unauthorized";
readonly type: "address";
readonly internalType: "address";
}];
}];
functionName: "updateTokenCreator";
args: readonly [`0x${string}`, `0x${string}`];
};
/**
* Simulate updating the token creator admin address.
*
* @param token The token address to update the creator for
* @param newCreator The new creator/admin address
* @param account Optional account to simulate calling for
* @returns The simulated output
*/
updateTokenCreatorSimulate({ token, newCreator, }: {
token: `0x${string}`;
newCreator: `0x${string}`;
}, account?: Account): Promise<any>;
/**
* Update the token creator admin address.
*
* This allows you to change which address can trigger fee claims for your token.
* Only callable by the current creator address.
*
* @param token The token address to update the creator for
* @param newCreator The new creator/admin address
* @returns Transaction hash or error
*/
updateTokenCreator({ token, newCreator, }: {
token: `0x${string}`;
newCreator: `0x${string}`;
}): Promise<{
txHash: `0x${string}`;
error: undefined;
} | {
txHash: undefined;
error: ClankerError;
}>;
/**
* Get an abi-typed transaction for claiming token creator fees.
*
* This allows the authorized creator to transfer all accumulated fees from the
* Safe wallet to any recipient address. Only callable by the authorized creator
* for the specified token.
*
* @param safe The Safe wallet address holding the fees
* @param token The ERC20 token address to transfer
* @param recipient The address to receive the fees
* @returns Abi transaction config
*/
getTokenCreatorTransferTransaction({ safe, token, recipient, }: {
safe: `0x${string}`;
token: `0x${string}`;
recipient: `0x${string}`;
}): {
address: "0x10F4485d6f90239B72c6A5eaD2F2320993D285E4";
abi: readonly [{
readonly type: "constructor";
readonly inputs: readonly [{
readonly name: "owner_";
readonly type: "address";
readonly internalType: "address";
}, {
readonly name: "teamSpender_";
readonly type: "address";
readonly internalType: "address";
}, {
readonly name: "teamGrantedTokens_";
readonly type: "address[]";
readonly internalType: "address[]";
}];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "initializeTokenCreator";
readonly inputs: readonly [{
readonly name: "token";
readonly type: "address";
readonly internalType: "address";
}, {
readonly name: "newCreator";
readonly type: "address";
readonly internalType: "address";
}, {
readonly name: "proof";
readonly type: "bytes32[]";
readonly internalType: "bytes32[]";
}];
readonly outputs: readonly [];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "owner";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "address";
readonly internalType: "address";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "renounceOwnership";
readonly inputs: readonly [];
readonly outputs: readonly [];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "setTeamSpender";
readonly inputs: readonly [{
readonly name: "teamSpender_";
readonly type: "address";
readonly internalType: "address";
}];
readonly outputs: readonly [];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "setTokenCreatorRoot";
readonly inputs: readonly [{
readonly name: "tokenCreatorRoot_";
readonly type: "bytes32";
readonly internalType: "bytes32";
}];
readonly outputs: readonly [];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "teamGrantedTokens";
readonly inputs: readonly [{
readonly name: "";
readonly type: "uint256";
readonly internalType: "uint256";
}];
readonly outputs: readonly [{
readonly name: "";
readonly type: "address";
readonly internalType: "address";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "teamGrantedTokensMap";
readonly inputs: readonly [{
readonly name: "token";
readonly type: "address";
readonly internalType: "address";
}];
readonly outputs: readonly [{
readonly name: "teamGranted";
readonly type: "bool";
readonly internalType: "bool";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "teamSpender";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "address";
readonly internalType: "address";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "teamTransfer";
readonly inputs: readonly [{
readonly name: "safe";
readonly type: "address";
readonly internalType: "address";
}, {
readonly name: "token";
readonly type: "address";
readonly internalType: "address";
}, {
readonly name: "recipient";
readonly type: "address";
readonly internalType: "address";
}, {
readonly name: "amount";
readonly type: "uint256";
readonly internalType: "uint256";
}];
readonly outputs: readonly [];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "teamTransferEth";
readonly inputs: readonly [{
readonly name: "safe";
readonly type: "address";
readonly internalType: "address";
}];
readonly outputs: readonly [];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "tokenCreator";
readonly inputs: readonly [{
readonly name: "token";
readonly type: "address";
readonly internalType: "address";
}];
readonly outputs: readonly [{
readonly name: "creator";
readonly type: "address";
readonly internalType: "address";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "tokenCreatorRoot";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "bytes32";
readonly internalType: "bytes32";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "tokenCreatorTransfer";
readonly inputs: readonly [{
readonly name: "safe";
readonly type: "address";
readonly internalType: "address";
}, {
readonly name: "token";
readonly type: "address";
readonly internalType: "address";
}, {
readonly name: "recipient";
readonly type: "address";
readonly internalType: "address";
}];
readonly outputs: readonly [];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "transferOwnership";
readonly inputs: readonly [{
readonly name: "newOwner";
readonly type: "address";
readonly internalType: "address";
}];
readonly outputs: readonly [];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "updateTokenCreator";
readonly inputs: readonly [{
readonly name: "token";
readonly type: "address";
readonly internalType: "address";
}, {
readonly name: "newCreator";
readonly type: "address";
readonly internalType: "address";
}];
readonly outputs: readonly [];
readonly stateMutability: "nonpayable";
}, {
readonly type: "event";
readonly name: "InitializeTokenCreator";
readonly inputs: readonly [{
readonly name: "token";
readonly type: "address";
readonly indexed: false;
readonly internalType: "address";
}, {
readonly name: "initializer";
readonly type: "address";
readonly indexed: false;
readonly internalType: "address";
}, {
readonly name: "creator";
readonly type: "address";
readonly indexed: false;
readonly internalType: "address";
}];
readonly anonymous: false;
}, {
readonly type: "event";
readonly name: "OwnershipTransferred";
readonly inputs: readonly [{
readonly name: "previousOwner";
readonly type: "address";
readonly indexed: true;
readonly internalType: "address";
}, {
readonly name: "newOwner";
readonly type: "address";
readonly indexed: true;
readonly internalType: "address";
}];
readonly anonymous: false;
}, {
readonly type: "event";
readonly name: "SetTeamSpender";
readonly inputs: readonly [{
readonly name: "previousTeamSpender";
readonly type: "address";
readonly indexed: true;
readonly internalType: "address";
}, {
readonly name: "newTeamSpender";
readonly type: "address";
readonly indexed: true;
readonly internalType: "address";
}];
readonly anonymous: false;
}, {
readonly type: "event";
readonly name: "SetTokenCreatorRoot";
readonly inputs: readonly [{
readonly name: "tokenCreatorRoot";
readonly type: "bytes32";
readonly indexed: false;
readonly internalType: "bytes32";
}];
readonly anonymous: false;
}, {
readonly type: "event";
readonly name: "Transfer";
readonly inputs: readonly [{
readonly name: "safe";
readonly type: "address";
readonly indexed: true;
readonly internalType: "address";
}, {
readonly name: "token";
readonly type: "address";
readonly indexed: true;
readonly internalType: "address";
}, {
readonly name: "amount";
readonly type: "uint256";
readonly indexed: false;
readonly internalType: "uint256";
}, {
readonly name: "spender";
readonly type: "address";
readonly indexed: false;
readonly internalType: "address";
}, {
readonly name: "recipient";
readonly type: "address";
readonly indexed: true;
readonly internalType: "address";
}];
readonly anonymous: false;
}, {
readonly type: "event";
readonly name: "UpdateTokenCreator";
readonly inputs: readonly [{
readonly name: "token";
readonly type: "address";
readonly indexed: false;
readonly internalType: "address";
}, {
readonly name: "previousCreator";
readonly type: "address";
readonly indexed: false;
readonly internalType: "address";
}, {
readonly name: "newCreator";
readonly type: "address";
readonly indexed: false;
readonly internalType: "address";
}];
readonly anonymous: false;
}, {
readonly type: "error";
readonly name: "InsufficientBalance";
readonly inputs: readonly [{
readonly name: "safe";
readonly type: "address";
readonly internalType: "address";
}, {
readonly name: "token";
readonly type: "address";
readonly internalType: "address";
}, {
readonly name: "balance";
readonly type: "uint256";
readonly internalType: "uint256";
}];
}, {
readonly type: "error";
readonly name: "InvalidProof";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "NotAuthorizedToSpend";
readonly inputs: readonly [{
readonly name: "sender";
readonly type: "address";
readonly internalType: "address";
}, {
readonly name: "token";
readonly type: "address";
readonly internalType: "address";
}];
}, {
readonly type: "error";
readonly name: "OwnableInvalidOwner";
readonly inputs: readonly [{
readonly name: "owner";
readonly type: "address";
readonly internalType: "address";
}];
}, {
readonly type: "error";
readonly name: "OwnableUnauthorizedAccount";
readonly inputs: readonly [{
readonly name: "account";
readonly type: "address";
readonly internalType: "address";
}];
}, {
readonly type: "error";
readonly name: "TokenCreatorAlreadyInitialized";
readonly inputs: readonly [{
readonly name: "token";
readonly type: "address";
readonly internalType: "address";
}, {
readonly name: "delegate";
readonly type: "address";
readonly internalType: "address";
}];
}, {
readonly type: "error";
readonly name: "TokenCreatorRootAlreadySet";
readonly inputs: readonly [{
readonly name: "tokenCreatorRoot";
readonly type: "bytes32";
readonly internalType: "bytes32";
}];
}, {
readonly type: "error";
readonly name: "TokenCreatorRootNotSet";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "Unauthorized";
readonly inputs: readonly [{
readonly name: "unauthorized";
readonly type: "address";
readonly internalType: "address";
}];
}];
functionName: "tokenCreatorTransfer";
args: readonly [`0x${string}`, `0x${string}`, `0x${string}`];
};
/**
* Simulate claiming token creator fees.
*
* @param safe The Safe wallet address holding the fees
* @param token The ERC20 token address to transfer
* @param recipient The address to receive the fees
* @param account Optional account to simulate calling for
* @returns The simulated output
*/
tokenCreatorTransferSimulate({ safe, token, recipient, }: {
safe: `0x${string}`;
token: `0x${string}`;
recipient: `0x${string}`;
}, account?: Account): Promise<any>;
/**
* Claim token creator fees by transferring them from the Safe to a recipient.
*
* This transfers all accumulated fees for your token to the specified recipient.
* Only callable by the authorized creator address for the token.
*
* Note: Not all Clanker tokens can be sent to the zero address. If you get an error,
* consider sending to 0x000000000000000000000000000000000000dEaD instead.
*
* @param safe The Safe wallet address holding the fees
* @param token The ERC20 token address to transfer
* @param recipient The address to receive the fees
* @returns Transaction hash or error
*/
tokenCreatorTransfer({ safe, token, recipient, }: {
safe: `0x${string}`;
token: `0x${string}`;
recipient: `0x${string}`;
}): Promise<{
txHash: `0x${string}`;
error: undefined;
} | {
txHash: undefined;
error: ClankerError;
}>;
/**
* Get the stored creator address for a token.
*
* Returns the address that is authorized to claim fees for this token.
* Returns zero address if the token creator has not been initialized yet.
*
* @param token The token address to check
* @returns The creator address for the token
*/
getTokenCreator({ token }: {
token: `0x${string}`;
}): Promise<`0x${string}`>;
/**
* Get the current Merkle root used for verifying token creator proofs.
*
* This is used internally by the contract to verify initialization proofs.
*
* @returns The current token creator Merkle root
*/
getTokenCreatorRoot(): Promise<`0x${string}`>;
}
/**
* Interface for token creator entries in the CSV data
*/
interface TokenCreatorEntry {
tokenAddress: `0x${string}`;
currentCreator: `0x${string}`;
}
/**
* Result of merkle proof generation
*/
interface MerkleProofResult {
tokenAddress: `0x${string}`;
currentCreator: `0x${string}`;
proof: `0x${string}`[];
leafHash: `0x${string}`;
root: `0x${string}`;
index: number;
}
/**
* Build a merkle tree from token-creator entries and get a proof for a specific token.
*
* @param entries Array of token-creator pairs
* @param targetToken The token address to generate a proof for
* @returns Merkle proof result or null if token not found
*/
declare function getTokenCreatorMerkleProof(entries: TokenCreatorEntry[], targetToken: `0x${string}`): MerkleProofResult | null;
/**
* Parse CSV content into token-creator entries.
*
* @param csvContent CSV string with columns: tokenAddress,currentCreator
* @returns Array of token-creator entries
*/
declare function parseTokenCreatorCSV(csvContent: string): TokenCreatorEntry[];
/**
* Get the expected merkle root for the current dataset.
* This is the root that should be set in the contract.
*/
declare const EXPECTED_MERKLE_ROOT: "0xa7dcc91a2136ef1b3c708dbab901cbeb075f6df5cf5987494fedc340c57f7025";
/**
* Get a transaction config for initializing token creator ownership.
*
* @param token The token address to initialize a creator for
* @param newCreator The address to set as the creator for this token
* @param proof The Merkle proof demonstrating authorization
* @returns Transaction config
*/
declare function getInitializeTokenCreatorTransaction({ token, newCreator, proof, }: {
token: `0x${string}`;
newCreator: `0x${string}`;
proof: `0x${string}`[];
}): {
address: "0x10F4485d6f90239B72c6A5eaD2F2320993D285E4";
abi: readonly [{
readonly type: "constructor";
readonly inputs: readonly [{
readonly name: "owner_";
readonly type: "address";
readonly internalType: "address";
}, {
readonly name: "teamSpender_";
readonly type: "address";
readonly internalType: "address";
}, {
readonly name: "teamGrantedTokens_";
readonly type: "address[]";
readonly internalType: "address[]";
}];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "initializeTokenCreator";
readonly inputs: readonly [{
readonly name: "token";
readonly type: "address";
readonly internalType: "address";
}, {
readonly name: "newCreator";
readonly type: "address";
readonly internalType: "address";
}, {
readonly name: "proof";
readonly type: "bytes32[]";
readonly internalType: "bytes32[]";
}];
readonly outputs: readonly [];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "owner";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "address";
readonly internalType: "address";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "renounceOwnership";
readonly inputs: readonly [];
readonly outputs: readonly [];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "setTeamSpender";
readonly inputs: readonly [{
readonly name: "teamSpender_";
readonly type: "address";
readonly internalType: "address";
}];
readonly outputs: readonly [];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "setTokenCreatorRoot";
readonly inputs: readonly [{
readonly name: "tokenCreatorRoot_";
readonly type: "bytes32";
readonly internalType: "bytes32";
}];
readonly outputs: readonly [];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "teamGrantedTokens";
readonly inputs: readonly [{
readonly name: "";
readonly type: "uint256";
readonly internalType: "uint256";
}];
readonly outputs: readonly [{
readonly name: "";
readonly type: "address";
readonly internalType: "address";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "teamGrantedTokensMap";
readonly inputs: readonly [{
readonly name: "token";
readonly type: "address";
readonly internalType: "address";
}];
readonly outputs: readonly [{
readonly name: "teamGranted";
readonly type: "bool";
readonly internalType: "bool";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "teamSpender";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "address";
readonly internalType: "address";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "teamTransfer";
readonly inputs: readonly [{
readonly name: "safe";
readonly type: "address";
readonly internalType: "address";
}, {
readonly name: "token";
readonly type: "address";
readonly internalType: "address";
}, {
readonly name: "recipient";
readonly type: "address";
readonly internalType: "address";
}, {
readonly name: "amount";
readonly type: "uint256";
readonly internalType: "uint256";
}];
readonly outputs: readonly [];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "teamTransferEth";
readonly inputs: readonly [{
readonly name: "safe";
readonly type: "address";
readonly internalType: "address";
}];
readonly outputs: readonly [];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "tokenCreator";
readonly inputs: readonly [{
readonly name: "token";
readonly type: "address";
readonly internalType: "address";
}];
readonly outputs: readonly [{
readonly name: "creator";
readonly type: "address";
readonly internalType: "address";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "tokenCreatorRoot";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "bytes32";
readonly internalType: "bytes32";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "tokenCreatorTransfer";
readonly inputs: readonly [{
readonly name: "safe";
readonly type: "address";
readonly internalType: "address";
}, {
readonly name: "token";
readonly type: "address";
readonly internalType: "address";
}, {
readonly name: "recipient";
readonly type: "address";
readonly internalType: "address";
}];
readonly outputs: readonly [];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "transferOwnership";
readonly inputs: readonly [{
readonly name: "newOwner";
readonly type: "address";
readonly internalType: "address";
}];
readonly outputs: readonly [];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "updateTokenCreator";
readonly inputs: readonly [{
readonly name: "token";
readonly type: "address";
readonly internalType: "address";
}, {
readonly name: "newCreator";
readonly type: "address";
readonly internalType: "address";
}];
readonly outputs: readonly [];
readonly stateMutability: "nonpayable";
}, {
readonly type: "event";
readonly name: "InitializeTokenCreator";
readonly inputs: readonly [{
readonly name: "token";
readonly type: "address";
readonly indexed: false;
readonly internalType: "address";
}, {
readonly name: "initializer";
readonly type: "address";
readonly indexed: false;
readonly internalType: "address";
}, {
readonly name: "creator";
readonly type: "address";
readonly indexed: false;
readonly internalType: "address";
}];
readonly anonymous: false;
}, {
readonly type: "event";
readonly name: "OwnershipTransferred";
readonly inputs: readonly [{
readonly name: "previousOwner";
readonly type: "address";
readonly indexed: true;
readonly internalType: "address";
}, {
readonly name: "newOwner";
readonly type: "address";
readonly indexed: true;
readonly internalType: "address";
}];
readonly anonymous: false;
}, {
readonly type: "event";
readonly name: "SetTeamSpender";
readonly inputs: readonly [{
readonly name: "previousTeamSpender";
readonly type: "address";
readonly indexed: true;
readonly internalType: "address";
}, {
readonly name: "newTeamSpender";
readonly type: "address";
readonly indexed: true;
readonly internalType: "address";
}];
readonly anonymous: false;
}, {
readonly type: "event";
readonly name: "SetTokenCreatorRoot";
readonly inputs: readonly [{
readonly name: "tokenCreatorRoot";
readonly type: "bytes32";
readonly indexed: false;
readonly internalType: "bytes32";
}];
readonly anonymous: false;
}, {
readonly type: "event";
readonly name: "Transfer";
readonly inputs: readonly [{
readonly name: "safe";
readonly type: "address";
readonly indexed: true;
readonly internalType: "address";
}, {
readonly name: "token";
readonly type: "address";
readonly indexed: true;
readonly internalType: "address";
}, {
readonly name: "amount";
readonly type: "uint256";
readonly indexed: false;
readonly internalType: "uint256";
}, {
readonly name: "spender";
readonly type: "address";
readonly indexed: false;
readonly internalType: "address";
}, {
readonly name: "recipient";
readonly type: "address";
readonly indexed: true;
readonly internalType: "address";
}];
readonly anonymous: false;
}, {
readonly type: "event";
readonly name: "UpdateTokenCreator";
readonly inputs: readonly [{
readonly name: "token";
readonly type: "address";
readonly indexed: false;
readonly internalType: "address";
}, {
readonly name: "previousCreator";
readonly type: "address";
readonly indexed: false;
readonly internalType: "address";
}, {
readonly name: "newCreator";
readonly type: "address";
readonly indexed: false;
readonly internalType: "address";
}];
readonly anonymous: false;
}, {
readonly type: "error";
readonly name: "InsufficientBalance";
readonly inputs: readonly [{
readonly name: "safe";
readonly type: "address";
readonly internalType: "address";
}, {
readonly name: "token";
readonly type: "address";
readonly internalType: "address";
}, {
readonly name: "balance";
readonly type: "uint256";
readonly internalType: "uint256";
}];
}, {
readonly type: "error";
readonly name: "InvalidProof";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "NotAuthorizedToSpend";
readonly inputs: readonly [{
readonly name: "sender";
readonly type: "address";
readonly internalType: "address";
}, {
readonly name: "token";
readonly type: "address";
readonly internalType: "address";
}];
}, {
readonly type: "error";
readonly name: "OwnableInvalidOwner";
readonly inputs: readonly [{
readonly name: "owner";
readonly type: "address";
readonly internalType: "address";
}];
}, {
readonly type: "error";
readonly name: "OwnableUnauthorizedAccount";
readonly inputs: readonly [{
readonly name: "account";
readonly type: "address";
readonly internalType: "address";
}];
}, {
readonly type: "error";
readonly name: "TokenCreatorAlreadyInitialized";
readonly inputs: readonly [{
readonly name: "token";
readonly type: "address";
readonly internalType: "address";
}, {
readonly name: "delegate";
readonly type: "address";
readonly internalType: "address";
}];
}, {
readonly type: "error";
readonly name: "TokenCreatorRootAlreadySet";
readonly inputs: readonly [{
readonly name: "tokenCreatorRoot";
readonly type: "bytes32";
readonly internalType: "bytes32";
}];
}, {
readonly type: "error";
readonly name: "TokenCreatorRootNotSet";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "Unauthorized";
readonly inputs: readonly [{
readonly name: "unauthorized";
readonly type: "address";
readonly internalType: "address";
}];
}];
functionName: "initializeTokenCreator";
args: readonly [`0x${string}`, `0x${string}`, `0x${string}`[]];
};
/**
* Get a transaction config for updating the token creator admin address.
*
* @param token The token address to update the creator for
* @param newCreator The new creator/admin address
* @returns Transaction config
*/
declare function getUpdateTokenCreatorTransaction({ token, newCreator, }: {
token: `0x${string}`;
newCreator: `0x${string}`;
}): {
address: "0x10F4485d6f90239B72c6A5eaD2F2320993D285E4";
abi: readonly [{
readonly type: "constructor";
readonly inputs: readonly [{
readonly name: "owner_";
readonly type: "address";
readonly internalType: "address";
}, {
readonly name: "teamSpender_";
readonly type: "address";
readonly internalType: "address";
}, {
readonly name: "teamGrantedTokens_";
readonly type: "address[]";
readonly internalType: "address[]";
}];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "initializeTokenCreator";
readonly inputs: readonly [{
readonly name: "token";
readonly type: "address";
readonly internalType: "address";
}, {
readonly name: "newCreator";
readonly type: "address";
readonly internalType: "address";
}, {
readonly name: "proof";
readonly type: "bytes32[]";
readonly internalType: "bytes32[]";
}];
readonly outputs: readonly [];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "owner";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "address";
readonly internalType: "address";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "renounceOwnership";
readonly inputs: readonly [];
readonly outputs: readonly [];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "setTeamSpender";
readonly inputs: readonly [{
readonly name: "teamSpender_";
readonly type: "address";
readonly internalType: "address";
}];
readonly outputs: readonly [];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "setTokenCreatorRoot";
readonly inputs: readonly [{
readonly name: "tokenCreatorRoot_";
readonly type: "bytes32";
readonly internalType: "bytes32";
}];
readonly outputs: readonly [];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "teamGrantedTokens";
readonly inputs: readonly [{
readonly name: "";
readonly type: "uint256";
readonly internalType: "uint256";
}];
readonly outputs: readonly [{
readonly name: "";
readonly type: "address";
readonly internalType: "address";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "teamGrantedTokensMap";
readonly inputs: readonly [{
readonly name: "token";
readonly type: "address";
readonly internalType: "address";
}];
readonly outputs: readonly [{
readonly name: "teamGranted";
readonly type: "bool";
readonly internalType: "bool";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "teamSpender";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "address";
readonly internalType: "address";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "teamTransfer";
readonly inputs: readonly [{
readonly name: "safe";
readonly type: "address";
readonly internalType: "address";
}, {
readonly name: "token";
readonly type: "address";
readonly internalType: "address";
}, {
readonly name: "recipient";
readonly type: "address";
readonly internalType: "address";
}, {
readonly name: "amount";
readonly type: "uint256";
readonly internalType: "uint256";
}];
readonly outputs: readonly [];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "teamTransferEth";
readonly inputs: readonly [{
readonly name: "safe";
readonly type: "address";
readonly internalType: "address";
}];
readonly outputs: readonly [];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "tokenCreator";
readonly inputs: readonly [{
readonly name: "token";
readonly type: "address";
readonly internalType: "address";
}];
readonly outputs: readonly [{
readonly name: "creator";
readonly type: "address";
readonly internalType: "address";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "tokenCreatorRoot";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "bytes32";
readonly internalType: "bytes32";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "tokenCreatorTransfer";
readonly inputs: readonly [{
readonly name: "safe";
readonly type: "address";
readonly internalType: "address";
}, {
readonly name: "token";
readonly type: "address";
readonly internalType: "address";
}, {
readonly name: "recipient";
readonly type: "address";
readonly internalType: "address";
}];
readonly outputs: readonly [];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "transferOwnership";
readonly inputs: readonly [{
readonly name: "newOwner";
readonly type: "address";
readonly internalType: "address";
}];
readonly outputs: readonly [];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "updateTokenCreator";
readonly inputs: readonly [{
readonly name: "token";
readonly type: "address";
readonly internalType: "address";
}, {
readonly name: "newCreator";
readonly type: "address";
readonly internalType: "address";
}];
readonly outputs: readonly [];
readonly stateMutability: "nonpayable";
}, {
readonly type: "event";
readonly name: "InitializeTokenCreator";
readonly inputs: readonly [{
readonly name: "token";
readonly type: "address";
readonly indexed: false;
readonly internalType: "address";
}, {
readonly name: "initializer";
readonly type: "address";
readonly indexed: false;
readonly internalType: "address";
}, {
readonly name: "creator";
readonly type: "address";
readonly indexed: false;
readonly internalType: "address";
}];
readonly anonymous: false;
}, {
readonly type: "event";
readonly name: "OwnershipTransferred";
readonly inputs: readonly [{
readonly name: "previousOwner";
readonly type: "address";
readonly indexed: true;
readonly internalType: "address";
}, {
readonly name: "newOwner";
readonly type: "address";
readonly indexed: true;
readonly internalType: "address";
}];
readonly anonymous: false;
}, {
readonly type: "event";
readonly name: "SetTeamSpender";
readonly inputs: readonly [{
readonly name: "previousTeamSpender";
readonly type: "address";
readonly indexed: true;
readonly internalType: "address";
}, {
readonly name: "newTeamSpender";
readonly type: "address";
readonly indexed: true;
readonly internalType: "address";
}];
readonly anonymous: false;
}, {
readonly type: "event";
readonly name: "SetTokenCreatorRoot";
readonly inputs: readonly [{
readonly name: "tokenCreatorRoot";
readonly type: "bytes32";
readonly indexed: false;
readonly internalType: "bytes32";
}];
readonly anonymous: false;
}, {
readonly type: "event";
readonly name: "Transfer";
readonly inputs: readonly [{
readonly name: "safe";
readonly type: "address";
readonly indexed: true;
readonly internalType: "address";
}, {
readonly name: "token";
readonly type: "address";
readonly indexed: true;
readonly internalType: "address";
}, {
readonly name: "amount";
readonly type: "uint256";
readonly indexed: false;
readonly internalType: "uint256";
}, {
readonly name: "spender";
readonly type: "address";
readonly indexed: false;
readonly internalType: "address";
}, {
readonly name: "recipient";
readonly type: "address";
readonly indexed: true;
readonly internalType: "address";
}];
readonly anonymous: false;
}, {
readonly type: "event";
readonly name: "UpdateTokenCreator";
readonly inputs: readonly [{
readonly name: "token";
readonly type: "address";
readonly indexed: false;
readonly internalType: "address";
}, {
readonly name: "previousCreator";
readonly type: "address";
readonly indexed: false;
readonly internalType: "address";
}, {
readonly name: "newCreator";
readonly type: "address";
readonly indexed: false;
readonly internalType: "address";
}];
readonly anonymous: false;
}, {
readonly type: "error";
readonly name: "InsufficientBalance";
readonly inputs: readonly [{
readonly name: "safe";
readonly type: "address";
readonly internalType: "address";
}, {
readonly name: "token";
readonly type: "address";
readonly internalType: "address";
}, {
readonly name: "balance";
readonly type: "uint256";
readonly internalType: "uint256";
}];
}, {
readonly type: "error";
readonly name: "InvalidProof";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "NotAuthorizedToSpend";
readonly inputs: readonly [{
readonly name: "sender";
readonly type: "address";
readonly internalType: "address";
}, {
readonly name: "token";
readonly type: "address";
readonly internalType: "address";
}];
}, {
readonly type: "error";
readonly name: "OwnableInvalidOwner";
readonly inputs: readonly [{
readonly name: "owner";
readonly type: "address";
readonly internalType: "address";
}];
}, {
readonly type: "error";
readonly name: "OwnableUnauthorizedAccount";
readonly inputs: readonly [{
readonly name: "account";
readonly type: "address";
readonly internalType: "address";
}];
}, {
readonly type: "error";
readonly name: "TokenCreatorAlreadyInitialized";
readonly inputs: readonly [{
readonly name: "token";
readonly type: "address";
readonly internalType: "address";
}, {
readonly name: "delegate";
readonly type: "address";
readonly internalType: "address";
}];
}, {
readonly type: "error";
readonly name: "TokenCreatorRootAlreadySet";
readonly inputs: readonly [{
readonly name: "tokenCreatorRoot";
readonly type: "bytes32";
readonly internalType: "bytes32";
}];
}, {
readonly type: "error";
readonly name: "TokenCreatorRootNotSet";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "Unauthorized";
readonly inputs: readonly [{
readonly name: "unauthorized";
readonly type: "address";
readonly internalType: "address";
}];
}];
functionName: "updateTokenCreator";
args: readonly [`0x${string}`, `0x${string}`];
};
/**
* Get a transaction config for claiming token creator fees.
*
* @param safe The Safe wallet address holding the fees
* @param token The ERC20 token address to transfer
* @param recipient The address to receive the fees
* @returns Transaction config
*/
declare function getTokenCreatorTransferTransaction({ safe, token, recipient, }: {
safe: `0x${string}`;
token: `0x${string}`;
recipient: `0x${string}`;
}): {
address: "0x10F4485d6f90239B72c6A5eaD2F2320993D285E4";
abi: readonly [{
readonly type: "constructor";
readonly inputs: readonly [{
readonly name: "owner_";
readonly type: "address";
readonly internalType: "address";
}, {
readonly name: "teamSpender_";
readonly type: "address";
readonly internalType: "address";
}, {
readonly name: "teamGrantedTokens_";
readonly type: "address[]";
readonly internalType: "address[]";
}];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "initializeTokenCreator";
readonly inputs: readonly [{
readonly name: "token";
readonly type: "address";
readonly internalType: "address";
}, {
readonly name: "newCreator";
readonly type: "address";
readonly internalType: "address";
}, {
readonly name: "proof";
readonly type: "bytes32[]";
readonly internalType: "bytes32[]";
}];
readonly outputs: readonly [];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "owner";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "address";
readonly internalType: "address";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "renounceOwnership";
readonly inputs: readonly [];
readonly outputs: readonly [];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "setTeamSpender";
readonly inputs: readonly [{
readonly name: "teamSpender_";
readonly type: "address";
readonly internalType: "address";
}];
readonly outputs: readonly [];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "setTokenCreatorRoot";
readonly inputs: readonly [{
readonly name: "tokenCreatorRoot_";
readonly type: "bytes32";
readonly internalType: "bytes32";
}];
readonly outputs: readonly [];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "teamGrantedTokens";
readonly inputs: readonly [{
readonly name: "";
readonly type: "uint256";
readonly internalType: "uint256";
}];
readonly outputs: readonly [{
readonly name: "";
readonly type: "address";
readonly internalType: "address";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "teamGrantedTokensMap";
readonly inputs: readonly [{
readonly name: "token";
readonly type: "address";
readonly internalType: "address";
}];
readonly outputs: readonly [{
readonly name: "teamGranted";
readonly type: "bool";
readonly internalType: "bool";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "teamSpender";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "address";
readonly internalType: "address";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "teamTransfer";
readonly inputs: readonly [{
readonly name: "safe";
readonly type: "address";
readonly internalType: "address";
}, {
readonly name: "token";
readonly type: "address";
readonly internalType: "address";
}, {
readonly name: "recipient";
readonly type: "address";
readonly internalType: "address";
}, {
readonly name: "amount";
readonly type: "uint256";
readonly internalType: "uint256";
}];
readonly outputs: readonly [];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "teamTransferEth";
readonly inputs: readonly [{
readonly name: "safe";
readonly type: "address";
readonly internalType: "address";
}];
readonly outputs: readonly [];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "tokenCreator";
readonly inputs: readonly [{
readonly name: "token";
readonly type: "address";
readonly internalType: "address";
}];
readonly outputs: readonly [{
readonly name: "creator";
readonly type: "address";
readonly internalType: "address";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "tokenCreatorRoot";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "bytes32";
readonly internalType: "bytes32";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "tokenCreatorTransfer";
readonly inputs: readonly [{
readonly name: "safe";
readonly type: "address";
readonly internalType: "address";
}, {
readonly name: "token";
readonly type: "address";
readonly internalType: "address";
}, {
readonly name: "recipient";
readonly type: "address";
readonly internalType: "address";
}];
readonly outputs: readonly [];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "transferOwnership";
readonly inputs: readonly [{
readonly name: "newOwner";
readonly type: "address";
readonly internalType: "address";
}];
readonly outputs: readonly [];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "updateTokenCreator";
readonly inputs: readonly [{
readonly name: "token";
readonly type: "address";
readonly internalType: "address";
}, {
readonly name: "newCreator";
readonly type: "address";
readonly internalType: "address";
}];
readonly outputs: readonly [];
readonly stateMutability: "nonpayable";
}, {
readonly type: "event";
readonly name: "InitializeTokenCreator";
readonly inputs: readonly [{
readonly name: "token";
readonly type: "address";
readonly indexed: false;
readonly internalType: "address";
}, {
readonly name: "initializer";
readonly type: "address";
readonly indexed: false;
readonly internalType: "address";
}, {
readonly name: "creator";
readonly type: "address";
readonly indexed: false;
readonly internalType: "address";
}];
readonly anonymous: false;
}, {
readonly type: "event";
readonly name: "OwnershipTransferred";
readonly inputs: readonly [{
readonly name: "previousOwner";
readonly type: "address";
readonly indexed: true;
readonly internalType: "address";
}, {
readonly name: "newOwner";
readonly type: "address";
readonly indexed: true;
readonly internalType: "address";
}];
readonly anonymous: false;
}, {
readonly type: "event";
readonly name: "SetTeamSpender";
readonly inputs: readonly [{
readonly name: "previousTeamSpender";
readonly type: "address";
readonly indexed: true;
readonly internalType: "address";
}, {
readonly name: "newTeamSpender";
readonly type: "address";
readonly indexed: true;
readonly internalType: "address";
}];
readonly anonymous: false;
}, {
readonly type: "event";
readonly name: "SetTokenCreatorRoot";
readonly inputs: readonly [{
readonly name: "tokenCreatorRoot";
readonly type: "bytes32";
readonly indexed: false;
readonly internalType: "bytes32";
}];
readonly anonymous: false;
}, {
readonly type: "event";
readonly name: "Transfer";
readonly inputs: readonly [{
readonly name: "safe";
readonly type: "address";
readonly indexed: true;
readonly internalType: "address";
}, {
readonly name: "token";
readonly type: "address";
readonly indexed: true;
readonly internalType: "address";
}, {
readonly name: "amount";
readonly type: "uint256";
readonly indexed: false;
readonly internalType: "uint256";
}, {
readonly name: "spender";
readonly type: "address";
readonly indexed: false;
readonly internalType: "address";
}, {
readonly name: "recipient";
readonly type: "address";
readonly indexed: true;
readonly internalType: "address";
}];
readonly anonymous: false;
}, {
readonly type: "event";
readonly name: "UpdateTokenCreator";
readonly inputs: readonly [{
readonly name: "token";
readonly type: "address";
readonly indexed: false;
readonly internalType: "address";
}, {
readonly name: "previousCreator";
readonly type: "address";
readonly indexed: false;
readonly internalType: "address";
}, {
readonly name: "newCreator";
readonly type: "address";
readonly indexed: false;
readonly internalType: "address";
}];
readonly anonymous: false;
}, {
readonly type: "error";
readonly name: "InsufficientBalance";
readonly inputs: readonly [{
readonly name: "safe";
readonly type: "address";
readonly internalType: "address";
}, {
readonly name: "token";
readonly type: "address";
readonly internalType: "address";
}, {
readonly name: "balance";
readonly type: "uint256";
readonly internalType: "uint256";
}];
}, {
readonly type: "error";
readonly name: "InvalidProof";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "NotAuthorizedToSpend";
readonly inputs: readonly [{
readonly name: "sender";
readonly type: "address";
readonly internalType: "address";
}, {
readonly name: "token";
readonly type: "address";
readonly internalType: "address";
}];
}, {
readonly type: "error";
readonly name: "OwnableInvalidOwner";
readonly inputs: readonly [{
readonly name: "owner";
readonly type: "address";
readonly internalType: "address";
}];
}, {
readonly type: "error";
readonly name: "OwnableUnauthorizedAccount";
readonly inputs: readonly [{
readonly name: "account";
readonly type: "address";
readonly internalType: "address";
}];
}, {
readonly type: "error";
readonly name: "TokenCreatorAlreadyInitialized";
readonly inputs: readonly [{
readonly name: "token";
readonly type: "address";
readonly internalType: "address";
}, {
readonly name: "delegate";
readonly type: "address";
readonly internalType: "address";
}];
}, {
readonly type: "error";
readonly name: "TokenCreatorRootAlreadySet";
readonly inputs: readonly [{
readonly name: "tokenCreatorRoot";
readonly type: "bytes32";
readonly internalType: "bytes32";
}];
}, {
readonly type: "error";
readonly name: "TokenCreatorRootNotSet";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "Unauthorized";
readonly inputs: readonly [{
readonly name: "unauthorized";
readonly type: "address";
readonly internalType: "address";
}];
}];
functionName: "tokenCreatorTransfer";
args: readonly [`0x${string}`, `0x${string}`, `0x${string}`];
};
/**
* Build a claim transaction for legacy Clanker v0–v3.1 fees on Base.
*
* - v2/v3/v3.1: call factory.claimRewards(token)
* - v0/v1: call locker.collectFees(recipient, tokenId) or metaLocker.collectFees(tokenId)
*
* @param publicClient Viem public client for Base
* @param args Claim arguments
* @returns Transaction object with { kind, to, data, value? }
*/
declare function getClaimLegacyFeesTransaction(publicClient: PublicClient, args: LegacyClaimArgs): Promise<LegacyClaimTx>;
/**
* Estimate claimable Uniswap V3 LP fees for a legacy position on Base.
*
* Reads ownerOf(positionId) and simulates collect() to get the claimable amounts.
*
* @param publicClient Viem public client for Base
* @param opts Options with chainId and positionId
* @returns Claimable fees with positionOwner, token0, token1, amount0, amount1
*/
declare function getLegacyClaimableFees(publicClient: PublicClient, opts: {
chainId: number;
positionId: bigint;
}): Promise<LegacyClaimableFees>;
export { BASE_CHAIN_ID, CLANKER_FACTORIES_BASE, type ClaimLegacyCreatorFeesInput, ClankerClaimRewardsAbi, ClankerTokenDeployerAbi, EXPECTED_MERKLE_ROOT, LEGACY_FACTORIES, LEGACY_FEE_CLAIMS_ADDRESS, type LegacyClaimArgs, type LegacyClaimFeesInput, type LegacyClaimFeesTransaction, type LegacyClaimTransactionConfig, type LegacyClaimTx, type LegacyClaimTxKind, type LegacyClaimableFees, LegacyCreatorFees, LegacyFeeClaims, type LegacyTokenType, type LegacyVersion, LockerCollectFeesAbi, type LockerParams, type MerkleProofResult, MetaLockerCollectFeesAbi, NonfungiblePositionManagerCollectAbi, NonfungiblePositionManagerOwnerOfAbi, NonfungiblePositionManagerPositionsAbi, type TokenCreatorEntry, UNISWAP_V3_BASE, getClaimLegacyCreatorFeesTransaction, getClaimLegacyFeesTransaction, getInitializeTokenCreatorTransaction, getLegacyClaimableFees, getTokenCreatorMerkleProof, getTokenCreatorTransferTransaction, getUpdateTokenCreatorTransaction, parseTokenCreatorCSV };