import { Context, Effect, Layer } from "effect"; import type { Address, Hash, Hex } from "viem"; import type { ClientNotFoundError, WrongNetworkError } from "../core/errors/index.js"; import { ContractReadError, ContractWriteError, WalletNotConnectedError } from "../core/errors/index.js"; import { PublicClientService, WalletClientService } from "../core/index.js"; import { Erc721MetadataFetchError, Erc721NoTokenURIError, Erc721OwnerNotFoundError, Erc721TransferError } from "../erc721/errors.js"; import type { NftMetadata } from "../erc721/metadata.js"; export type Erc721ServiceShape = { readonly ownerOf: (params: { address: Address; chainId: number; tokenId: bigint; }) => Effect.Effect; readonly balanceOf: (params: { address: Address; chainId: number; owner: Address; }) => Effect.Effect; readonly getApproved: (params: { address: Address; chainId: number; tokenId: bigint; }) => Effect.Effect; readonly isApprovedForAll: (params: { address: Address; chainId: number; operator: Address; owner: Address; }) => Effect.Effect; readonly approve: (params: { account?: Address; address: Address; chainId: number; to: Address; tokenId: bigint; }) => Effect.Effect; readonly setApprovalForAll: (params: { account?: Address; address: Address; approved: boolean; chainId: number; operator: Address; }) => Effect.Effect; readonly transferFrom: (params: { account?: Address; address: Address; chainId: number; from: Address; to: Address; tokenId: bigint; }) => Effect.Effect; readonly safeTransferFrom: (params: { account?: Address; address: Address; chainId: number; data?: Hex; from: Address; to: Address; tokenId: bigint; }) => Effect.Effect; readonly tokenURI: (params: { address: Address; chainId: number; tokenId: bigint; }) => Effect.Effect; readonly fetchMetadata: (params: { address: Address; chainId: number; gateways?: { arweave?: string; ipfs?: string; }; tokenId: bigint; }) => Effect.Effect; readonly name: (params: { address: Address; chainId: number; }) => Effect.Effect; readonly symbol: (params: { address: Address; chainId: number; }) => Effect.Effect; readonly totalSupply: (params: { address: Address; chainId: number; }) => Effect.Effect; }; declare const Erc721Service_base: Context.TagClass; export declare class Erc721Service extends Erc721Service_base { } export declare const Erc721ServiceLive: Layer.Layer; export {}; //# sourceMappingURL=service.d.ts.map