import type { Layer } from "effect";
import { Effect } from "effect";
import type { Address, Hash, Hex } from "viem";
import type { NftMetadata } from "../erc721/index.js";
import { Erc721Service } from "../erc721/index.js";
export type MockErc721ServiceConfig = {
ownerOf?: (params: {
address: Address;
chainId: number;
tokenId: bigint;
}) => Effect.Effect
;
balanceOf?: (params: {
address: Address;
chainId: number;
owner: Address;
}) => Effect.Effect;
getApproved?: (params: {
address: Address;
chainId: number;
tokenId: bigint;
}) => Effect.Effect;
isApprovedForAll?: (params: {
address: Address;
chainId: number;
operator: Address;
owner: Address;
}) => Effect.Effect;
tokenURI?: (params: {
address: Address;
chainId: number;
tokenId: bigint;
}) => Effect.Effect;
fetchMetadata?: (params: {
address: Address;
chainId: number;
gateways?: {
arweave?: string;
ipfs?: string;
};
tokenId: bigint;
}) => Effect.Effect;
name?: (params: {
address: Address;
chainId: number;
}) => Effect.Effect;
symbol?: (params: {
address: Address;
chainId: number;
}) => Effect.Effect;
totalSupply?: (params: {
address: Address;
chainId: number;
}) => Effect.Effect;
approve?: (params: {
account?: Address;
address: Address;
chainId: number;
to: Address;
tokenId: bigint;
}) => Effect.Effect;
setApprovalForAll?: (params: {
account?: Address;
address: Address;
approved: boolean;
chainId: number;
operator: Address;
}) => Effect.Effect;
transferFrom?: (params: {
account?: Address;
address: Address;
chainId: number;
from: Address;
to: Address;
tokenId: bigint;
}) => Effect.Effect;
safeTransferFrom?: (params: {
account?: Address;
address: Address;
chainId: number;
data?: Hex;
from: Address;
to: Address;
tokenId: bigint;
}) => Effect.Effect;
};
export declare const makeMockErc721ServiceLayer: (config?: MockErc721ServiceConfig, supportedChainId?: number) => Layer.Layer;
//# sourceMappingURL=mock-erc721-service.d.ts.map