SANTA CLARA -- The 49ers completed contract negotiations with their final unsigned draft pick as the team was going through warm-ups for the first practice of training camp.

Former Stanford defensive end Solomon Thomas, whom the 49ers selected with the No. 3 overall pick, signed Friday and was expected to join his teammates later in the day.

The sides agreed to the mandatory four-year contract worth more than $28 million, including a signing bonus of approximately $18.6 million. The deal is expected to be fully guaranteed.

The 49ers also have an option for the fifth season (2021) that must be exercised months after the 2019 season.

Thomas was unable to participate in full-squad workouts during the offseason due to Stanford’s late class schedule. NFL rules prohibit a rookie from attending the offseason program until his school’s classes have concluded for the spring session.

The 49ers – and the vast majority of NFL teams – have not had a contract stalemate with a rookie since the new collective bargaining agreement went into effect in 2011.

The organization had similar timing with a first-round pick from last year. Guard Joshua Garnett, also from Stanford, signed with the 49ers on the evening before players were scheduled to report to training camp.

Around the NFL, there has been only one notable contract disagreement that prevented a draft pick from reporting to camp in a timely fashion. Defensive lineman Joey Bosa, whom the Chargers selected with the No. 3 pick last year, sat out a month of training camp due to a disagreement over how his bonus would be distributed. Bosa and Thomas are both represented by the agent firm of Creative Artists Agency.