Contrato em Ethers.js

Provider:
A Provider (in ethers) is a class which provides an abstraction for a connection to the Ethereum Network. 
It provides read-only access to the Blockchain and its status.

import { ethers } from "ethers";
const provider = new ethers.providers.Web3Provider(window.ethereum)

Signer:
A Signer is a class which (usually) in some way directly or indirectly has access to a private key,
which can sign messages and transactions to authorize the network to charge your account ether to perform operations.

const signer = provider.getSigner()

Contract:
A Contract is an abstraction which represents a connection to a specific contract on the Ethereum Network,
so that applications can use it like a normal JavaScript object.
Shirshak kandel