/* Autogenerated file. Do not edit manually. */
/* tslint:disable */
/* eslint-disable */
import type {
  BaseContract,
  BigNumberish,
  BytesLike,
  FunctionFragment,
  Result,
  Interface,
  EventFragment,
  AddressLike,
  ContractRunner,
  ContractMethod,
  Listener,
} from "ethers";
import type {
  TypedContractEvent,
  TypedDeferredTopicFilter,
  TypedEventLog,
  TypedLogDescription,
  TypedListener,
  TypedContractMethod,
} from "./common";

export declare namespace KAMI721C {
  export type RoyaltyDataStruct = {
    receiver: AddressLike;
    feeNumerator: BigNumberish;
  };

  export type RoyaltyDataStructOutput = [
    receiver: string,
    feeNumerator: bigint
  ] & { receiver: string; feeNumerator: bigint };
}

export interface KAMI721CInterface extends Interface {
  getFunction(
    nameOrSignature:
      | "DEFAULT_ADMIN_ROLE"
      | "OWNER_ROLE"
      | "PLATFORM_ROLE"
      | "RENTER_ROLE"
      | "approve"
      | "balanceOf"
      | "burn"
      | "endRental"
      | "extendRental"
      | "getApproved"
      | "getMintRoyaltyReceivers"
      | "getRentalInfo"
      | "getRoleAdmin"
      | "getTransferRoyaltyReceivers"
      | "grantRole"
      | "hasActiveRentals"
      | "hasRole"
      | "isApprovedForAll"
      | "isRented"
      | "mint"
      | "mintPrice"
      | "name"
      | "ownerOf"
      | "pause"
      | "paused"
      | "platformAddress"
      | "platformCommissionPercentage"
      | "renounceRole"
      | "rentToken"
      | "revokeRole"
      | "royaltyInfo"
      | "royaltyPercentage"
      | "safeTransferFrom(address,address,uint256)"
      | "safeTransferFrom(address,address,uint256,bytes)"
      | "sellToken"
      | "setApprovalForAll"
      | "setBaseURI"
      | "setMintPrice"
      | "setMintRoyalties"
      | "setPlatformCommission"
      | "setRoyaltyPercentage"
      | "setTokenMintRoyalties"
      | "setTokenTransferRoyalties"
      | "setTransferRoyalties"
      | "supportsInterface"
      | "symbol"
      | "tokenByIndex"
      | "tokenOfOwnerByIndex"
      | "tokenURI"
      | "totalSupply"
      | "transferFrom"
      | "unpause"
      | "usdcToken"
  ): FunctionFragment;

  getEvent(
    nameOrSignatureOrTopic:
      | "Approval"
      | "ApprovalForAll"
      | "MintRoyaltiesUpdated"
      | "Paused"
      | "PlatformCommissionPaid"
      | "PlatformCommissionUpdated"
      | "RentalEnded"
      | "RentalExtended"
      | "RoleAdminChanged"
      | "RoleGranted"
      | "RoleRevoked"
      | "RoyaltyPercentageUpdated"
      | "TokenMintRoyaltiesUpdated"
      | "TokenRented"
      | "TokenSold"
      | "TokenTransferRoyaltiesUpdated"
      | "Transfer"
      | "TransferRoyaltiesUpdated"
      | "TransferRoyaltyDistributed"
      | "Unpaused"
  ): EventFragment;

  encodeFunctionData(
    functionFragment: "DEFAULT_ADMIN_ROLE",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "OWNER_ROLE",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "PLATFORM_ROLE",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "RENTER_ROLE",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "approve",
    values: [AddressLike, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "balanceOf",
    values: [AddressLike]
  ): string;
  encodeFunctionData(functionFragment: "burn", values: [BigNumberish]): string;
  encodeFunctionData(
    functionFragment: "endRental",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "extendRental",
    values: [BigNumberish, BigNumberish, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "getApproved",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "getMintRoyaltyReceivers",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "getRentalInfo",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "getRoleAdmin",
    values: [BytesLike]
  ): string;
  encodeFunctionData(
    functionFragment: "getTransferRoyaltyReceivers",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "grantRole",
    values: [BytesLike, AddressLike]
  ): string;
  encodeFunctionData(
    functionFragment: "hasActiveRentals",
    values: [AddressLike]
  ): string;
  encodeFunctionData(
    functionFragment: "hasRole",
    values: [BytesLike, AddressLike]
  ): string;
  encodeFunctionData(
    functionFragment: "isApprovedForAll",
    values: [AddressLike, AddressLike]
  ): string;
  encodeFunctionData(
    functionFragment: "isRented",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(functionFragment: "mint", values?: undefined): string;
  encodeFunctionData(functionFragment: "mintPrice", values?: undefined): string;
  encodeFunctionData(functionFragment: "name", values?: undefined): string;
  encodeFunctionData(
    functionFragment: "ownerOf",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(functionFragment: "pause", values?: undefined): string;
  encodeFunctionData(functionFragment: "paused", values?: undefined): string;
  encodeFunctionData(
    functionFragment: "platformAddress",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "platformCommissionPercentage",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "renounceRole",
    values: [BytesLike, AddressLike]
  ): string;
  encodeFunctionData(
    functionFragment: "rentToken",
    values: [BigNumberish, BigNumberish, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "revokeRole",
    values: [BytesLike, AddressLike]
  ): string;
  encodeFunctionData(
    functionFragment: "royaltyInfo",
    values: [BigNumberish, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "royaltyPercentage",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "safeTransferFrom(address,address,uint256)",
    values: [AddressLike, AddressLike, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "safeTransferFrom(address,address,uint256,bytes)",
    values: [AddressLike, AddressLike, BigNumberish, BytesLike]
  ): string;
  encodeFunctionData(
    functionFragment: "sellToken",
    values: [AddressLike, BigNumberish, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "setApprovalForAll",
    values: [AddressLike, boolean]
  ): string;
  encodeFunctionData(functionFragment: "setBaseURI", values: [string]): string;
  encodeFunctionData(
    functionFragment: "setMintPrice",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "setMintRoyalties",
    values: [KAMI721C.RoyaltyDataStruct[]]
  ): string;
  encodeFunctionData(
    functionFragment: "setPlatformCommission",
    values: [BigNumberish, AddressLike]
  ): string;
  encodeFunctionData(
    functionFragment: "setRoyaltyPercentage",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "setTokenMintRoyalties",
    values: [BigNumberish, KAMI721C.RoyaltyDataStruct[]]
  ): string;
  encodeFunctionData(
    functionFragment: "setTokenTransferRoyalties",
    values: [BigNumberish, KAMI721C.RoyaltyDataStruct[]]
  ): string;
  encodeFunctionData(
    functionFragment: "setTransferRoyalties",
    values: [KAMI721C.RoyaltyDataStruct[]]
  ): string;
  encodeFunctionData(
    functionFragment: "supportsInterface",
    values: [BytesLike]
  ): string;
  encodeFunctionData(functionFragment: "symbol", values?: undefined): string;
  encodeFunctionData(
    functionFragment: "tokenByIndex",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "tokenOfOwnerByIndex",
    values: [AddressLike, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "tokenURI",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "totalSupply",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "transferFrom",
    values: [AddressLike, AddressLike, BigNumberish]
  ): string;
  encodeFunctionData(functionFragment: "unpause", values?: undefined): string;
  encodeFunctionData(functionFragment: "usdcToken", values?: undefined): string;

  decodeFunctionResult(
    functionFragment: "DEFAULT_ADMIN_ROLE",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "OWNER_ROLE", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "PLATFORM_ROLE",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "RENTER_ROLE",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "approve", data: BytesLike): Result;
  decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result;
  decodeFunctionResult(functionFragment: "burn", data: BytesLike): Result;
  decodeFunctionResult(functionFragment: "endRental", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "extendRental",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getApproved",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getMintRoyaltyReceivers",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getRentalInfo",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getRoleAdmin",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getTransferRoyaltyReceivers",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "grantRole", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "hasActiveRentals",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "hasRole", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "isApprovedForAll",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "isRented", data: BytesLike): Result;
  decodeFunctionResult(functionFragment: "mint", data: BytesLike): Result;
  decodeFunctionResult(functionFragment: "mintPrice", data: BytesLike): Result;
  decodeFunctionResult(functionFragment: "name", data: BytesLike): Result;
  decodeFunctionResult(functionFragment: "ownerOf", data: BytesLike): Result;
  decodeFunctionResult(functionFragment: "pause", data: BytesLike): Result;
  decodeFunctionResult(functionFragment: "paused", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "platformAddress",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "platformCommissionPercentage",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "renounceRole",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "rentToken", data: BytesLike): Result;
  decodeFunctionResult(functionFragment: "revokeRole", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "royaltyInfo",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "royaltyPercentage",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "safeTransferFrom(address,address,uint256)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "safeTransferFrom(address,address,uint256,bytes)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "sellToken", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "setApprovalForAll",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "setBaseURI", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "setMintPrice",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "setMintRoyalties",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "setPlatformCommission",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "setRoyaltyPercentage",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "setTokenMintRoyalties",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "setTokenTransferRoyalties",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "setTransferRoyalties",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "supportsInterface",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "symbol", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "tokenByIndex",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "tokenOfOwnerByIndex",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "tokenURI", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "totalSupply",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "transferFrom",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "unpause", data: BytesLike): Result;
  decodeFunctionResult(functionFragment: "usdcToken", data: BytesLike): Result;
}

export namespace ApprovalEvent {
  export type InputTuple = [
    owner: AddressLike,
    approved: AddressLike,
    tokenId: BigNumberish
  ];
  export type OutputTuple = [owner: string, approved: string, tokenId: bigint];
  export interface OutputObject {
    owner: string;
    approved: string;
    tokenId: bigint;
  }
  export type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
  export type Filter = TypedDeferredTopicFilter<Event>;
  export type Log = TypedEventLog<Event>;
  export type LogDescription = TypedLogDescription<Event>;
}

export namespace ApprovalForAllEvent {
  export type InputTuple = [
    owner: AddressLike,
    operator: AddressLike,
    approved: boolean
  ];
  export type OutputTuple = [
    owner: string,
    operator: string,
    approved: boolean
  ];
  export interface OutputObject {
    owner: string;
    operator: string;
    approved: boolean;
  }
  export type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
  export type Filter = TypedDeferredTopicFilter<Event>;
  export type Log = TypedEventLog<Event>;
  export type LogDescription = TypedLogDescription<Event>;
}

export namespace MintRoyaltiesUpdatedEvent {
  export type InputTuple = [royalties: KAMI721C.RoyaltyDataStruct[]];
  export type OutputTuple = [royalties: KAMI721C.RoyaltyDataStructOutput[]];
  export interface OutputObject {
    royalties: KAMI721C.RoyaltyDataStructOutput[];
  }
  export type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
  export type Filter = TypedDeferredTopicFilter<Event>;
  export type Log = TypedEventLog<Event>;
  export type LogDescription = TypedLogDescription<Event>;
}

export namespace PausedEvent {
  export type InputTuple = [account: AddressLike];
  export type OutputTuple = [account: string];
  export interface OutputObject {
    account: string;
  }
  export type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
  export type Filter = TypedDeferredTopicFilter<Event>;
  export type Log = TypedEventLog<Event>;
  export type LogDescription = TypedLogDescription<Event>;
}

export namespace PlatformCommissionPaidEvent {
  export type InputTuple = [
    tokenId: BigNumberish,
    platformAddress: AddressLike,
    amount: BigNumberish
  ];
  export type OutputTuple = [
    tokenId: bigint,
    platformAddress: string,
    amount: bigint
  ];
  export interface OutputObject {
    tokenId: bigint;
    platformAddress: string;
    amount: bigint;
  }
  export type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
  export type Filter = TypedDeferredTopicFilter<Event>;
  export type Log = TypedEventLog<Event>;
  export type LogDescription = TypedLogDescription<Event>;
}

export namespace PlatformCommissionUpdatedEvent {
  export type InputTuple = [
    newPercentage: BigNumberish,
    newPlatformAddress: AddressLike
  ];
  export type OutputTuple = [newPercentage: bigint, newPlatformAddress: string];
  export interface OutputObject {
    newPercentage: bigint;
    newPlatformAddress: string;
  }
  export type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
  export type Filter = TypedDeferredTopicFilter<Event>;
  export type Log = TypedEventLog<Event>;
  export type LogDescription = TypedLogDescription<Event>;
}

export namespace RentalEndedEvent {
  export type InputTuple = [
    tokenId: BigNumberish,
    owner: AddressLike,
    renter: AddressLike
  ];
  export type OutputTuple = [tokenId: bigint, owner: string, renter: string];
  export interface OutputObject {
    tokenId: bigint;
    owner: string;
    renter: string;
  }
  export type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
  export type Filter = TypedDeferredTopicFilter<Event>;
  export type Log = TypedEventLog<Event>;
  export type LogDescription = TypedLogDescription<Event>;
}

export namespace RentalExtendedEvent {
  export type InputTuple = [
    tokenId: BigNumberish,
    renter: AddressLike,
    newEndTime: BigNumberish
  ];
  export type OutputTuple = [
    tokenId: bigint,
    renter: string,
    newEndTime: bigint
  ];
  export interface OutputObject {
    tokenId: bigint;
    renter: string;
    newEndTime: bigint;
  }
  export type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
  export type Filter = TypedDeferredTopicFilter<Event>;
  export type Log = TypedEventLog<Event>;
  export type LogDescription = TypedLogDescription<Event>;
}

export namespace RoleAdminChangedEvent {
  export type InputTuple = [
    role: BytesLike,
    previousAdminRole: BytesLike,
    newAdminRole: BytesLike
  ];
  export type OutputTuple = [
    role: string,
    previousAdminRole: string,
    newAdminRole: string
  ];
  export interface OutputObject {
    role: string;
    previousAdminRole: string;
    newAdminRole: string;
  }
  export type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
  export type Filter = TypedDeferredTopicFilter<Event>;
  export type Log = TypedEventLog<Event>;
  export type LogDescription = TypedLogDescription<Event>;
}

export namespace RoleGrantedEvent {
  export type InputTuple = [
    role: BytesLike,
    account: AddressLike,
    sender: AddressLike
  ];
  export type OutputTuple = [role: string, account: string, sender: string];
  export interface OutputObject {
    role: string;
    account: string;
    sender: string;
  }
  export type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
  export type Filter = TypedDeferredTopicFilter<Event>;
  export type Log = TypedEventLog<Event>;
  export type LogDescription = TypedLogDescription<Event>;
}

export namespace RoleRevokedEvent {
  export type InputTuple = [
    role: BytesLike,
    account: AddressLike,
    sender: AddressLike
  ];
  export type OutputTuple = [role: string, account: string, sender: string];
  export interface OutputObject {
    role: string;
    account: string;
    sender: string;
  }
  export type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
  export type Filter = TypedDeferredTopicFilter<Event>;
  export type Log = TypedEventLog<Event>;
  export type LogDescription = TypedLogDescription<Event>;
}

export namespace RoyaltyPercentageUpdatedEvent {
  export type InputTuple = [newPercentage: BigNumberish];
  export type OutputTuple = [newPercentage: bigint];
  export interface OutputObject {
    newPercentage: bigint;
  }
  export type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
  export type Filter = TypedDeferredTopicFilter<Event>;
  export type Log = TypedEventLog<Event>;
  export type LogDescription = TypedLogDescription<Event>;
}

export namespace TokenMintRoyaltiesUpdatedEvent {
  export type InputTuple = [
    tokenId: BigNumberish,
    royalties: KAMI721C.RoyaltyDataStruct[]
  ];
  export type OutputTuple = [
    tokenId: bigint,
    royalties: KAMI721C.RoyaltyDataStructOutput[]
  ];
  export interface OutputObject {
    tokenId: bigint;
    royalties: KAMI721C.RoyaltyDataStructOutput[];
  }
  export type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
  export type Filter = TypedDeferredTopicFilter<Event>;
  export type Log = TypedEventLog<Event>;
  export type LogDescription = TypedLogDescription<Event>;
}

export namespace TokenRentedEvent {
  export type InputTuple = [
    tokenId: BigNumberish,
    owner: AddressLike,
    renter: AddressLike,
    startTime: BigNumberish,
    endTime: BigNumberish,
    rentalPrice: BigNumberish
  ];
  export type OutputTuple = [
    tokenId: bigint,
    owner: string,
    renter: string,
    startTime: bigint,
    endTime: bigint,
    rentalPrice: bigint
  ];
  export interface OutputObject {
    tokenId: bigint;
    owner: string;
    renter: string;
    startTime: bigint;
    endTime: bigint;
    rentalPrice: bigint;
  }
  export type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
  export type Filter = TypedDeferredTopicFilter<Event>;
  export type Log = TypedEventLog<Event>;
  export type LogDescription = TypedLogDescription<Event>;
}

export namespace TokenSoldEvent {
  export type InputTuple = [
    tokenId: BigNumberish,
    from: AddressLike,
    to: AddressLike,
    salePrice: BigNumberish
  ];
  export type OutputTuple = [
    tokenId: bigint,
    from: string,
    to: string,
    salePrice: bigint
  ];
  export interface OutputObject {
    tokenId: bigint;
    from: string;
    to: string;
    salePrice: bigint;
  }
  export type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
  export type Filter = TypedDeferredTopicFilter<Event>;
  export type Log = TypedEventLog<Event>;
  export type LogDescription = TypedLogDescription<Event>;
}

export namespace TokenTransferRoyaltiesUpdatedEvent {
  export type InputTuple = [
    tokenId: BigNumberish,
    royalties: KAMI721C.RoyaltyDataStruct[]
  ];
  export type OutputTuple = [
    tokenId: bigint,
    royalties: KAMI721C.RoyaltyDataStructOutput[]
  ];
  export interface OutputObject {
    tokenId: bigint;
    royalties: KAMI721C.RoyaltyDataStructOutput[];
  }
  export type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
  export type Filter = TypedDeferredTopicFilter<Event>;
  export type Log = TypedEventLog<Event>;
  export type LogDescription = TypedLogDescription<Event>;
}

export namespace TransferEvent {
  export type InputTuple = [
    from: AddressLike,
    to: AddressLike,
    tokenId: BigNumberish
  ];
  export type OutputTuple = [from: string, to: string, tokenId: bigint];
  export interface OutputObject {
    from: string;
    to: string;
    tokenId: bigint;
  }
  export type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
  export type Filter = TypedDeferredTopicFilter<Event>;
  export type Log = TypedEventLog<Event>;
  export type LogDescription = TypedLogDescription<Event>;
}

export namespace TransferRoyaltiesUpdatedEvent {
  export type InputTuple = [royalties: KAMI721C.RoyaltyDataStruct[]];
  export type OutputTuple = [royalties: KAMI721C.RoyaltyDataStructOutput[]];
  export interface OutputObject {
    royalties: KAMI721C.RoyaltyDataStructOutput[];
  }
  export type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
  export type Filter = TypedDeferredTopicFilter<Event>;
  export type Log = TypedEventLog<Event>;
  export type LogDescription = TypedLogDescription<Event>;
}

export namespace TransferRoyaltyDistributedEvent {
  export type InputTuple = [
    tokenId: BigNumberish,
    receiver: AddressLike,
    amount: BigNumberish
  ];
  export type OutputTuple = [tokenId: bigint, receiver: string, amount: bigint];
  export interface OutputObject {
    tokenId: bigint;
    receiver: string;
    amount: bigint;
  }
  export type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
  export type Filter = TypedDeferredTopicFilter<Event>;
  export type Log = TypedEventLog<Event>;
  export type LogDescription = TypedLogDescription<Event>;
}

export namespace UnpausedEvent {
  export type InputTuple = [account: AddressLike];
  export type OutputTuple = [account: string];
  export interface OutputObject {
    account: string;
  }
  export type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
  export type Filter = TypedDeferredTopicFilter<Event>;
  export type Log = TypedEventLog<Event>;
  export type LogDescription = TypedLogDescription<Event>;
}

export interface KAMI721C extends BaseContract {
  connect(runner?: ContractRunner | null): KAMI721C;
  waitForDeployment(): Promise<this>;

  interface: KAMI721CInterface;

  queryFilter<TCEvent extends TypedContractEvent>(
    event: TCEvent,
    fromBlockOrBlockhash?: string | number | undefined,
    toBlock?: string | number | undefined
  ): Promise<Array<TypedEventLog<TCEvent>>>;
  queryFilter<TCEvent extends TypedContractEvent>(
    filter: TypedDeferredTopicFilter<TCEvent>,
    fromBlockOrBlockhash?: string | number | undefined,
    toBlock?: string | number | undefined
  ): Promise<Array<TypedEventLog<TCEvent>>>;

  on<TCEvent extends TypedContractEvent>(
    event: TCEvent,
    listener: TypedListener<TCEvent>
  ): Promise<this>;
  on<TCEvent extends TypedContractEvent>(
    filter: TypedDeferredTopicFilter<TCEvent>,
    listener: TypedListener<TCEvent>
  ): Promise<this>;

  once<TCEvent extends TypedContractEvent>(
    event: TCEvent,
    listener: TypedListener<TCEvent>
  ): Promise<this>;
  once<TCEvent extends TypedContractEvent>(
    filter: TypedDeferredTopicFilter<TCEvent>,
    listener: TypedListener<TCEvent>
  ): Promise<this>;

  listeners<TCEvent extends TypedContractEvent>(
    event: TCEvent
  ): Promise<Array<TypedListener<TCEvent>>>;
  listeners(eventName?: string): Promise<Array<Listener>>;
  removeAllListeners<TCEvent extends TypedContractEvent>(
    event?: TCEvent
  ): Promise<this>;

  DEFAULT_ADMIN_ROLE: TypedContractMethod<[], [string], "view">;

  OWNER_ROLE: TypedContractMethod<[], [string], "view">;

  PLATFORM_ROLE: TypedContractMethod<[], [string], "view">;

  RENTER_ROLE: TypedContractMethod<[], [string], "view">;

  approve: TypedContractMethod<
    [to: AddressLike, tokenId: BigNumberish],
    [void],
    "nonpayable"
  >;

  balanceOf: TypedContractMethod<[owner: AddressLike], [bigint], "view">;

  burn: TypedContractMethod<[tokenId: BigNumberish], [void], "nonpayable">;

  endRental: TypedContractMethod<[tokenId: BigNumberish], [void], "nonpayable">;

  extendRental: TypedContractMethod<
    [
      tokenId: BigNumberish,
      additionalDuration: BigNumberish,
      additionalPayment: BigNumberish
    ],
    [void],
    "nonpayable"
  >;

  getApproved: TypedContractMethod<[tokenId: BigNumberish], [string], "view">;

  getMintRoyaltyReceivers: TypedContractMethod<
    [tokenId: BigNumberish],
    [KAMI721C.RoyaltyDataStructOutput[]],
    "view"
  >;

  getRentalInfo: TypedContractMethod<
    [tokenId: BigNumberish],
    [
      [string, bigint, bigint, bigint, boolean] & {
        renter: string;
        startTime: bigint;
        endTime: bigint;
        rentalPrice: bigint;
        active: boolean;
      }
    ],
    "view"
  >;

  getRoleAdmin: TypedContractMethod<[role: BytesLike], [string], "view">;

  getTransferRoyaltyReceivers: TypedContractMethod<
    [tokenId: BigNumberish],
    [KAMI721C.RoyaltyDataStructOutput[]],
    "view"
  >;

  grantRole: TypedContractMethod<
    [role: BytesLike, account: AddressLike],
    [void],
    "nonpayable"
  >;

  hasActiveRentals: TypedContractMethod<[user: AddressLike], [boolean], "view">;

  hasRole: TypedContractMethod<
    [role: BytesLike, account: AddressLike],
    [boolean],
    "view"
  >;

  isApprovedForAll: TypedContractMethod<
    [owner: AddressLike, operator: AddressLike],
    [boolean],
    "view"
  >;

  isRented: TypedContractMethod<[tokenId: BigNumberish], [boolean], "view">;

  mint: TypedContractMethod<[], [void], "nonpayable">;

  mintPrice: TypedContractMethod<[], [bigint], "view">;

  name: TypedContractMethod<[], [string], "view">;

  ownerOf: TypedContractMethod<[tokenId: BigNumberish], [string], "view">;

  pause: TypedContractMethod<[], [void], "nonpayable">;

  paused: TypedContractMethod<[], [boolean], "view">;

  platformAddress: TypedContractMethod<[], [string], "view">;

  platformCommissionPercentage: TypedContractMethod<[], [bigint], "view">;

  renounceRole: TypedContractMethod<
    [role: BytesLike, account: AddressLike],
    [void],
    "nonpayable"
  >;

  rentToken: TypedContractMethod<
    [tokenId: BigNumberish, duration: BigNumberish, rentalPrice: BigNumberish],
    [void],
    "nonpayable"
  >;

  revokeRole: TypedContractMethod<
    [role: BytesLike, account: AddressLike],
    [void],
    "nonpayable"
  >;

  royaltyInfo: TypedContractMethod<
    [tokenId: BigNumberish, salePrice: BigNumberish],
    [[string, bigint] & { receiver: string; royaltyAmount: bigint }],
    "view"
  >;

  royaltyPercentage: TypedContractMethod<[], [bigint], "view">;

  "safeTransferFrom(address,address,uint256)": TypedContractMethod<
    [from: AddressLike, to: AddressLike, tokenId: BigNumberish],
    [void],
    "nonpayable"
  >;

  "safeTransferFrom(address,address,uint256,bytes)": TypedContractMethod<
    [
      from: AddressLike,
      to: AddressLike,
      tokenId: BigNumberish,
      data: BytesLike
    ],
    [void],
    "nonpayable"
  >;

  sellToken: TypedContractMethod<
    [to: AddressLike, tokenId: BigNumberish, salePrice: BigNumberish],
    [void],
    "nonpayable"
  >;

  setApprovalForAll: TypedContractMethod<
    [operator: AddressLike, approved: boolean],
    [void],
    "nonpayable"
  >;

  setBaseURI: TypedContractMethod<[baseURI: string], [void], "nonpayable">;

  setMintPrice: TypedContractMethod<
    [newMintPrice: BigNumberish],
    [void],
    "nonpayable"
  >;

  setMintRoyalties: TypedContractMethod<
    [royalties: KAMI721C.RoyaltyDataStruct[]],
    [void],
    "nonpayable"
  >;

  setPlatformCommission: TypedContractMethod<
    [
      newPlatformCommissionPercentage: BigNumberish,
      newPlatformAddress: AddressLike
    ],
    [void],
    "nonpayable"
  >;

  setRoyaltyPercentage: TypedContractMethod<
    [newRoyaltyPercentage: BigNumberish],
    [void],
    "nonpayable"
  >;

  setTokenMintRoyalties: TypedContractMethod<
    [tokenId: BigNumberish, royalties: KAMI721C.RoyaltyDataStruct[]],
    [void],
    "nonpayable"
  >;

  setTokenTransferRoyalties: TypedContractMethod<
    [tokenId: BigNumberish, royalties: KAMI721C.RoyaltyDataStruct[]],
    [void],
    "nonpayable"
  >;

  setTransferRoyalties: TypedContractMethod<
    [royalties: KAMI721C.RoyaltyDataStruct[]],
    [void],
    "nonpayable"
  >;

  supportsInterface: TypedContractMethod<
    [interfaceId: BytesLike],
    [boolean],
    "view"
  >;

  symbol: TypedContractMethod<[], [string], "view">;

  tokenByIndex: TypedContractMethod<[index: BigNumberish], [bigint], "view">;

  tokenOfOwnerByIndex: TypedContractMethod<
    [owner: AddressLike, index: BigNumberish],
    [bigint],
    "view"
  >;

  tokenURI: TypedContractMethod<[tokenId: BigNumberish], [string], "view">;

  totalSupply: TypedContractMethod<[], [bigint], "view">;

  transferFrom: TypedContractMethod<
    [from: AddressLike, to: AddressLike, tokenId: BigNumberish],
    [void],
    "nonpayable"
  >;

  unpause: TypedContractMethod<[], [void], "nonpayable">;

  usdcToken: TypedContractMethod<[], [string], "view">;

  getFunction<T extends ContractMethod = ContractMethod>(
    key: string | FunctionFragment
  ): T;

  getFunction(
    nameOrSignature: "DEFAULT_ADMIN_ROLE"
  ): TypedContractMethod<[], [string], "view">;
  getFunction(
    nameOrSignature: "OWNER_ROLE"
  ): TypedContractMethod<[], [string], "view">;
  getFunction(
    nameOrSignature: "PLATFORM_ROLE"
  ): TypedContractMethod<[], [string], "view">;
  getFunction(
    nameOrSignature: "RENTER_ROLE"
  ): TypedContractMethod<[], [string], "view">;
  getFunction(
    nameOrSignature: "approve"
  ): TypedContractMethod<
    [to: AddressLike, tokenId: BigNumberish],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "balanceOf"
  ): TypedContractMethod<[owner: AddressLike], [bigint], "view">;
  getFunction(
    nameOrSignature: "burn"
  ): TypedContractMethod<[tokenId: BigNumberish], [void], "nonpayable">;
  getFunction(
    nameOrSignature: "endRental"
  ): TypedContractMethod<[tokenId: BigNumberish], [void], "nonpayable">;
  getFunction(
    nameOrSignature: "extendRental"
  ): TypedContractMethod<
    [
      tokenId: BigNumberish,
      additionalDuration: BigNumberish,
      additionalPayment: BigNumberish
    ],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "getApproved"
  ): TypedContractMethod<[tokenId: BigNumberish], [string], "view">;
  getFunction(
    nameOrSignature: "getMintRoyaltyReceivers"
  ): TypedContractMethod<
    [tokenId: BigNumberish],
    [KAMI721C.RoyaltyDataStructOutput[]],
    "view"
  >;
  getFunction(
    nameOrSignature: "getRentalInfo"
  ): TypedContractMethod<
    [tokenId: BigNumberish],
    [
      [string, bigint, bigint, bigint, boolean] & {
        renter: string;
        startTime: bigint;
        endTime: bigint;
        rentalPrice: bigint;
        active: boolean;
      }
    ],
    "view"
  >;
  getFunction(
    nameOrSignature: "getRoleAdmin"
  ): TypedContractMethod<[role: BytesLike], [string], "view">;
  getFunction(
    nameOrSignature: "getTransferRoyaltyReceivers"
  ): TypedContractMethod<
    [tokenId: BigNumberish],
    [KAMI721C.RoyaltyDataStructOutput[]],
    "view"
  >;
  getFunction(
    nameOrSignature: "grantRole"
  ): TypedContractMethod<
    [role: BytesLike, account: AddressLike],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "hasActiveRentals"
  ): TypedContractMethod<[user: AddressLike], [boolean], "view">;
  getFunction(
    nameOrSignature: "hasRole"
  ): TypedContractMethod<
    [role: BytesLike, account: AddressLike],
    [boolean],
    "view"
  >;
  getFunction(
    nameOrSignature: "isApprovedForAll"
  ): TypedContractMethod<
    [owner: AddressLike, operator: AddressLike],
    [boolean],
    "view"
  >;
  getFunction(
    nameOrSignature: "isRented"
  ): TypedContractMethod<[tokenId: BigNumberish], [boolean], "view">;
  getFunction(
    nameOrSignature: "mint"
  ): TypedContractMethod<[], [void], "nonpayable">;
  getFunction(
    nameOrSignature: "mintPrice"
  ): TypedContractMethod<[], [bigint], "view">;
  getFunction(
    nameOrSignature: "name"
  ): TypedContractMethod<[], [string], "view">;
  getFunction(
    nameOrSignature: "ownerOf"
  ): TypedContractMethod<[tokenId: BigNumberish], [string], "view">;
  getFunction(
    nameOrSignature: "pause"
  ): TypedContractMethod<[], [void], "nonpayable">;
  getFunction(
    nameOrSignature: "paused"
  ): TypedContractMethod<[], [boolean], "view">;
  getFunction(
    nameOrSignature: "platformAddress"
  ): TypedContractMethod<[], [string], "view">;
  getFunction(
    nameOrSignature: "platformCommissionPercentage"
  ): TypedContractMethod<[], [bigint], "view">;
  getFunction(
    nameOrSignature: "renounceRole"
  ): TypedContractMethod<
    [role: BytesLike, account: AddressLike],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "rentToken"
  ): TypedContractMethod<
    [tokenId: BigNumberish, duration: BigNumberish, rentalPrice: BigNumberish],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "revokeRole"
  ): TypedContractMethod<
    [role: BytesLike, account: AddressLike],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "royaltyInfo"
  ): TypedContractMethod<
    [tokenId: BigNumberish, salePrice: BigNumberish],
    [[string, bigint] & { receiver: string; royaltyAmount: bigint }],
    "view"
  >;
  getFunction(
    nameOrSignature: "royaltyPercentage"
  ): TypedContractMethod<[], [bigint], "view">;
  getFunction(
    nameOrSignature: "safeTransferFrom(address,address,uint256)"
  ): TypedContractMethod<
    [from: AddressLike, to: AddressLike, tokenId: BigNumberish],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "safeTransferFrom(address,address,uint256,bytes)"
  ): TypedContractMethod<
    [
      from: AddressLike,
      to: AddressLike,
      tokenId: BigNumberish,
      data: BytesLike
    ],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "sellToken"
  ): TypedContractMethod<
    [to: AddressLike, tokenId: BigNumberish, salePrice: BigNumberish],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "setApprovalForAll"
  ): TypedContractMethod<
    [operator: AddressLike, approved: boolean],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "setBaseURI"
  ): TypedContractMethod<[baseURI: string], [void], "nonpayable">;
  getFunction(
    nameOrSignature: "setMintPrice"
  ): TypedContractMethod<[newMintPrice: BigNumberish], [void], "nonpayable">;
  getFunction(
    nameOrSignature: "setMintRoyalties"
  ): TypedContractMethod<
    [royalties: KAMI721C.RoyaltyDataStruct[]],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "setPlatformCommission"
  ): TypedContractMethod<
    [
      newPlatformCommissionPercentage: BigNumberish,
      newPlatformAddress: AddressLike
    ],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "setRoyaltyPercentage"
  ): TypedContractMethod<
    [newRoyaltyPercentage: BigNumberish],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "setTokenMintRoyalties"
  ): TypedContractMethod<
    [tokenId: BigNumberish, royalties: KAMI721C.RoyaltyDataStruct[]],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "setTokenTransferRoyalties"
  ): TypedContractMethod<
    [tokenId: BigNumberish, royalties: KAMI721C.RoyaltyDataStruct[]],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "setTransferRoyalties"
  ): TypedContractMethod<
    [royalties: KAMI721C.RoyaltyDataStruct[]],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "supportsInterface"
  ): TypedContractMethod<[interfaceId: BytesLike], [boolean], "view">;
  getFunction(
    nameOrSignature: "symbol"
  ): TypedContractMethod<[], [string], "view">;
  getFunction(
    nameOrSignature: "tokenByIndex"
  ): TypedContractMethod<[index: BigNumberish], [bigint], "view">;
  getFunction(
    nameOrSignature: "tokenOfOwnerByIndex"
  ): TypedContractMethod<
    [owner: AddressLike, index: BigNumberish],
    [bigint],
    "view"
  >;
  getFunction(
    nameOrSignature: "tokenURI"
  ): TypedContractMethod<[tokenId: BigNumberish], [string], "view">;
  getFunction(
    nameOrSignature: "totalSupply"
  ): TypedContractMethod<[], [bigint], "view">;
  getFunction(
    nameOrSignature: "transferFrom"
  ): TypedContractMethod<
    [from: AddressLike, to: AddressLike, tokenId: BigNumberish],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "unpause"
  ): TypedContractMethod<[], [void], "nonpayable">;
  getFunction(
    nameOrSignature: "usdcToken"
  ): TypedContractMethod<[], [string], "view">;

  getEvent(
    key: "Approval"
  ): TypedContractEvent<
    ApprovalEvent.InputTuple,
    ApprovalEvent.OutputTuple,
    ApprovalEvent.OutputObject
  >;
  getEvent(
    key: "ApprovalForAll"
  ): TypedContractEvent<
    ApprovalForAllEvent.InputTuple,
    ApprovalForAllEvent.OutputTuple,
    ApprovalForAllEvent.OutputObject
  >;
  getEvent(
    key: "MintRoyaltiesUpdated"
  ): TypedContractEvent<
    MintRoyaltiesUpdatedEvent.InputTuple,
    MintRoyaltiesUpdatedEvent.OutputTuple,
    MintRoyaltiesUpdatedEvent.OutputObject
  >;
  getEvent(
    key: "Paused"
  ): TypedContractEvent<
    PausedEvent.InputTuple,
    PausedEvent.OutputTuple,
    PausedEvent.OutputObject
  >;
  getEvent(
    key: "PlatformCommissionPaid"
  ): TypedContractEvent<
    PlatformCommissionPaidEvent.InputTuple,
    PlatformCommissionPaidEvent.OutputTuple,
    PlatformCommissionPaidEvent.OutputObject
  >;
  getEvent(
    key: "PlatformCommissionUpdated"
  ): TypedContractEvent<
    PlatformCommissionUpdatedEvent.InputTuple,
    PlatformCommissionUpdatedEvent.OutputTuple,
    PlatformCommissionUpdatedEvent.OutputObject
  >;
  getEvent(
    key: "RentalEnded"
  ): TypedContractEvent<
    RentalEndedEvent.InputTuple,
    RentalEndedEvent.OutputTuple,
    RentalEndedEvent.OutputObject
  >;
  getEvent(
    key: "RentalExtended"
  ): TypedContractEvent<
    RentalExtendedEvent.InputTuple,
    RentalExtendedEvent.OutputTuple,
    RentalExtendedEvent.OutputObject
  >;
  getEvent(
    key: "RoleAdminChanged"
  ): TypedContractEvent<
    RoleAdminChangedEvent.InputTuple,
    RoleAdminChangedEvent.OutputTuple,
    RoleAdminChangedEvent.OutputObject
  >;
  getEvent(
    key: "RoleGranted"
  ): TypedContractEvent<
    RoleGrantedEvent.InputTuple,
    RoleGrantedEvent.OutputTuple,
    RoleGrantedEvent.OutputObject
  >;
  getEvent(
    key: "RoleRevoked"
  ): TypedContractEvent<
    RoleRevokedEvent.InputTuple,
    RoleRevokedEvent.OutputTuple,
    RoleRevokedEvent.OutputObject
  >;
  getEvent(
    key: "RoyaltyPercentageUpdated"
  ): TypedContractEvent<
    RoyaltyPercentageUpdatedEvent.InputTuple,
    RoyaltyPercentageUpdatedEvent.OutputTuple,
    RoyaltyPercentageUpdatedEvent.OutputObject
  >;
  getEvent(
    key: "TokenMintRoyaltiesUpdated"
  ): TypedContractEvent<
    TokenMintRoyaltiesUpdatedEvent.InputTuple,
    TokenMintRoyaltiesUpdatedEvent.OutputTuple,
    TokenMintRoyaltiesUpdatedEvent.OutputObject
  >;
  getEvent(
    key: "TokenRented"
  ): TypedContractEvent<
    TokenRentedEvent.InputTuple,
    TokenRentedEvent.OutputTuple,
    TokenRentedEvent.OutputObject
  >;
  getEvent(
    key: "TokenSold"
  ): TypedContractEvent<
    TokenSoldEvent.InputTuple,
    TokenSoldEvent.OutputTuple,
    TokenSoldEvent.OutputObject
  >;
  getEvent(
    key: "TokenTransferRoyaltiesUpdated"
  ): TypedContractEvent<
    TokenTransferRoyaltiesUpdatedEvent.InputTuple,
    TokenTransferRoyaltiesUpdatedEvent.OutputTuple,
    TokenTransferRoyaltiesUpdatedEvent.OutputObject
  >;
  getEvent(
    key: "Transfer"
  ): TypedContractEvent<
    TransferEvent.InputTuple,
    TransferEvent.OutputTuple,
    TransferEvent.OutputObject
  >;
  getEvent(
    key: "TransferRoyaltiesUpdated"
  ): TypedContractEvent<
    TransferRoyaltiesUpdatedEvent.InputTuple,
    TransferRoyaltiesUpdatedEvent.OutputTuple,
    TransferRoyaltiesUpdatedEvent.OutputObject
  >;
  getEvent(
    key: "TransferRoyaltyDistributed"
  ): TypedContractEvent<
    TransferRoyaltyDistributedEvent.InputTuple,
    TransferRoyaltyDistributedEvent.OutputTuple,
    TransferRoyaltyDistributedEvent.OutputObject
  >;
  getEvent(
    key: "Unpaused"
  ): TypedContractEvent<
    UnpausedEvent.InputTuple,
    UnpausedEvent.OutputTuple,
    UnpausedEvent.OutputObject
  >;

  filters: {
    "Approval(address,address,uint256)": TypedContractEvent<
      ApprovalEvent.InputTuple,
      ApprovalEvent.OutputTuple,
      ApprovalEvent.OutputObject
    >;
    Approval: TypedContractEvent<
      ApprovalEvent.InputTuple,
      ApprovalEvent.OutputTuple,
      ApprovalEvent.OutputObject
    >;

    "ApprovalForAll(address,address,bool)": TypedContractEvent<
      ApprovalForAllEvent.InputTuple,
      ApprovalForAllEvent.OutputTuple,
      ApprovalForAllEvent.OutputObject
    >;
    ApprovalForAll: TypedContractEvent<
      ApprovalForAllEvent.InputTuple,
      ApprovalForAllEvent.OutputTuple,
      ApprovalForAllEvent.OutputObject
    >;

    "MintRoyaltiesUpdated(tuple[])": TypedContractEvent<
      MintRoyaltiesUpdatedEvent.InputTuple,
      MintRoyaltiesUpdatedEvent.OutputTuple,
      MintRoyaltiesUpdatedEvent.OutputObject
    >;
    MintRoyaltiesUpdated: TypedContractEvent<
      MintRoyaltiesUpdatedEvent.InputTuple,
      MintRoyaltiesUpdatedEvent.OutputTuple,
      MintRoyaltiesUpdatedEvent.OutputObject
    >;

    "Paused(address)": TypedContractEvent<
      PausedEvent.InputTuple,
      PausedEvent.OutputTuple,
      PausedEvent.OutputObject
    >;
    Paused: TypedContractEvent<
      PausedEvent.InputTuple,
      PausedEvent.OutputTuple,
      PausedEvent.OutputObject
    >;

    "PlatformCommissionPaid(uint256,address,uint256)": TypedContractEvent<
      PlatformCommissionPaidEvent.InputTuple,
      PlatformCommissionPaidEvent.OutputTuple,
      PlatformCommissionPaidEvent.OutputObject
    >;
    PlatformCommissionPaid: TypedContractEvent<
      PlatformCommissionPaidEvent.InputTuple,
      PlatformCommissionPaidEvent.OutputTuple,
      PlatformCommissionPaidEvent.OutputObject
    >;

    "PlatformCommissionUpdated(uint96,address)": TypedContractEvent<
      PlatformCommissionUpdatedEvent.InputTuple,
      PlatformCommissionUpdatedEvent.OutputTuple,
      PlatformCommissionUpdatedEvent.OutputObject
    >;
    PlatformCommissionUpdated: TypedContractEvent<
      PlatformCommissionUpdatedEvent.InputTuple,
      PlatformCommissionUpdatedEvent.OutputTuple,
      PlatformCommissionUpdatedEvent.OutputObject
    >;

    "RentalEnded(uint256,address,address)": TypedContractEvent<
      RentalEndedEvent.InputTuple,
      RentalEndedEvent.OutputTuple,
      RentalEndedEvent.OutputObject
    >;
    RentalEnded: TypedContractEvent<
      RentalEndedEvent.InputTuple,
      RentalEndedEvent.OutputTuple,
      RentalEndedEvent.OutputObject
    >;

    "RentalExtended(uint256,address,uint256)": TypedContractEvent<
      RentalExtendedEvent.InputTuple,
      RentalExtendedEvent.OutputTuple,
      RentalExtendedEvent.OutputObject
    >;
    RentalExtended: TypedContractEvent<
      RentalExtendedEvent.InputTuple,
      RentalExtendedEvent.OutputTuple,
      RentalExtendedEvent.OutputObject
    >;

    "RoleAdminChanged(bytes32,bytes32,bytes32)": TypedContractEvent<
      RoleAdminChangedEvent.InputTuple,
      RoleAdminChangedEvent.OutputTuple,
      RoleAdminChangedEvent.OutputObject
    >;
    RoleAdminChanged: TypedContractEvent<
      RoleAdminChangedEvent.InputTuple,
      RoleAdminChangedEvent.OutputTuple,
      RoleAdminChangedEvent.OutputObject
    >;

    "RoleGranted(bytes32,address,address)": TypedContractEvent<
      RoleGrantedEvent.InputTuple,
      RoleGrantedEvent.OutputTuple,
      RoleGrantedEvent.OutputObject
    >;
    RoleGranted: TypedContractEvent<
      RoleGrantedEvent.InputTuple,
      RoleGrantedEvent.OutputTuple,
      RoleGrantedEvent.OutputObject
    >;

    "RoleRevoked(bytes32,address,address)": TypedContractEvent<
      RoleRevokedEvent.InputTuple,
      RoleRevokedEvent.OutputTuple,
      RoleRevokedEvent.OutputObject
    >;
    RoleRevoked: TypedContractEvent<
      RoleRevokedEvent.InputTuple,
      RoleRevokedEvent.OutputTuple,
      RoleRevokedEvent.OutputObject
    >;

    "RoyaltyPercentageUpdated(uint96)": TypedContractEvent<
      RoyaltyPercentageUpdatedEvent.InputTuple,
      RoyaltyPercentageUpdatedEvent.OutputTuple,
      RoyaltyPercentageUpdatedEvent.OutputObject
    >;
    RoyaltyPercentageUpdated: TypedContractEvent<
      RoyaltyPercentageUpdatedEvent.InputTuple,
      RoyaltyPercentageUpdatedEvent.OutputTuple,
      RoyaltyPercentageUpdatedEvent.OutputObject
    >;

    "TokenMintRoyaltiesUpdated(uint256,tuple[])": TypedContractEvent<
      TokenMintRoyaltiesUpdatedEvent.InputTuple,
      TokenMintRoyaltiesUpdatedEvent.OutputTuple,
      TokenMintRoyaltiesUpdatedEvent.OutputObject
    >;
    TokenMintRoyaltiesUpdated: TypedContractEvent<
      TokenMintRoyaltiesUpdatedEvent.InputTuple,
      TokenMintRoyaltiesUpdatedEvent.OutputTuple,
      TokenMintRoyaltiesUpdatedEvent.OutputObject
    >;

    "TokenRented(uint256,address,address,uint256,uint256,uint256)": TypedContractEvent<
      TokenRentedEvent.InputTuple,
      TokenRentedEvent.OutputTuple,
      TokenRentedEvent.OutputObject
    >;
    TokenRented: TypedContractEvent<
      TokenRentedEvent.InputTuple,
      TokenRentedEvent.OutputTuple,
      TokenRentedEvent.OutputObject
    >;

    "TokenSold(uint256,address,address,uint256)": TypedContractEvent<
      TokenSoldEvent.InputTuple,
      TokenSoldEvent.OutputTuple,
      TokenSoldEvent.OutputObject
    >;
    TokenSold: TypedContractEvent<
      TokenSoldEvent.InputTuple,
      TokenSoldEvent.OutputTuple,
      TokenSoldEvent.OutputObject
    >;

    "TokenTransferRoyaltiesUpdated(uint256,tuple[])": TypedContractEvent<
      TokenTransferRoyaltiesUpdatedEvent.InputTuple,
      TokenTransferRoyaltiesUpdatedEvent.OutputTuple,
      TokenTransferRoyaltiesUpdatedEvent.OutputObject
    >;
    TokenTransferRoyaltiesUpdated: TypedContractEvent<
      TokenTransferRoyaltiesUpdatedEvent.InputTuple,
      TokenTransferRoyaltiesUpdatedEvent.OutputTuple,
      TokenTransferRoyaltiesUpdatedEvent.OutputObject
    >;

    "Transfer(address,address,uint256)": TypedContractEvent<
      TransferEvent.InputTuple,
      TransferEvent.OutputTuple,
      TransferEvent.OutputObject
    >;
    Transfer: TypedContractEvent<
      TransferEvent.InputTuple,
      TransferEvent.OutputTuple,
      TransferEvent.OutputObject
    >;

    "TransferRoyaltiesUpdated(tuple[])": TypedContractEvent<
      TransferRoyaltiesUpdatedEvent.InputTuple,
      TransferRoyaltiesUpdatedEvent.OutputTuple,
      TransferRoyaltiesUpdatedEvent.OutputObject
    >;
    TransferRoyaltiesUpdated: TypedContractEvent<
      TransferRoyaltiesUpdatedEvent.InputTuple,
      TransferRoyaltiesUpdatedEvent.OutputTuple,
      TransferRoyaltiesUpdatedEvent.OutputObject
    >;

    "TransferRoyaltyDistributed(uint256,address,uint256)": TypedContractEvent<
      TransferRoyaltyDistributedEvent.InputTuple,
      TransferRoyaltyDistributedEvent.OutputTuple,
      TransferRoyaltyDistributedEvent.OutputObject
    >;
    TransferRoyaltyDistributed: TypedContractEvent<
      TransferRoyaltyDistributedEvent.InputTuple,
      TransferRoyaltyDistributedEvent.OutputTuple,
      TransferRoyaltyDistributedEvent.OutputObject
    >;

    "Unpaused(address)": TypedContractEvent<
      UnpausedEvent.InputTuple,
      UnpausedEvent.OutputTuple,
      UnpausedEvent.OutputObject
    >;
    Unpaused: TypedContractEvent<
      UnpausedEvent.InputTuple,
      UnpausedEvent.OutputTuple,
      UnpausedEvent.OutputObject
    >;
  };
}
