EdjCase.ICP.Agent 2.3.2

There is a newer version of this package available.
See the version list below for details.
dotnet add package EdjCase.ICP.Agent --version 2.3.2                
NuGet\Install-Package EdjCase.ICP.Agent -Version 2.3.2                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="EdjCase.ICP.Agent" Version="2.3.2" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add EdjCase.ICP.Agent --version 2.3.2                
#r "nuget: EdjCase.ICP.Agent, 2.3.2"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install EdjCase.ICP.Agent as a Cake Addin
#addin nuget:?package=EdjCase.ICP.Agent&version=2.3.2

// Install EdjCase.ICP.Agent as a Cake Tool
#tool nuget:?package=EdjCase.ICP.Agent&version=2.3.2                

ICP.NET Agent

  • Library to communicate to and from the Internet Computer
  • PreGenerated ICRC1 Client
  • Nuget: EdjCase.ICP.Agent

Usage (Manual)

  • Dont define any types and use CandidValue and CandidType
  • Call functions using Candid objects
// Create http agent with anonymous identity
IAgent agent = new HttpAgent();

// Create Candid arg to send in request
ulong proposalId = 1234;
CandidArg arg = CandidArg.FromCandid(
	CandidTypedValue.Nat64(proposalId) // Candid type with no conversion
);

// Make request to IC
string method = "get_proposal_info";
Principal governanceCanisterId = Principal.FromText("rrkah-fqaaa-aaaaa-aaaaq-cai");
QueryResponse response = await agent.QueryAsync(governanceCanisterId, method, arg);

CandidArg reply = response.ThrowOrGetReply();
List<CandidTypedValue> values = reply.Values;

Usage (Self Defined Types)

  • Declare types of api models
  • Call functions and use custom object converters
// Create http agent with anonymous identity
IAgent agent = new HttpAgent();

// Create Candid arg to send in request
ulong proposalId = 1234;
CandidArg arg = CandidArg.FromCandid(
    CandidTypedValue.FromObject(proposalId) // Conversion can be C# or custom types
);

// Make request to IC
string method = "get_proposal_info";
Principal governanceCanisterId = Principal.FromText("rrkah-fqaaa-aaaaa-aaaaq-cai");
QueryResponse response = await agent.QueryAsync(governanceCanisterId, method, arg);

CandidArg reply = response.ThrowOrGetReply();
// Convert to custom class
OptionalValue<ProposalInfo> info = reply.ToObjects<OptionalValue<ProposalInfo>>(); // Conversion to custom or C# types

Usage (w/ Client Generator)

  • Run Client Generator on *.did file (see Client Generator below)
  • Use generated client and models to call function
// Create http agent with anonymous identity
IAgent agent = new HttpAgent();

Principal governanceCanisterId = Principal.FromText("rrkah-fqaaa-aaaaa-aaaaq-cai");
// Create new instance of client generated by `Client Generator` (this is using Governance.did for the NNS)
var client = new GovernanceApiClient(agent, governanceCanisterId);

// Make request
OptionalValue<ProposalInfo> info = await client.GetProposalInfoAsync(62143);

Using the ICRC1 PreGenerated Client

Instantiate an ICRC1Client by passing the HttpAgent instance and the canister ID of the ICRC1 canister as parameters:

IAgent agent = new HttpAgent(identity);
Principal canisterId = Principal.FromText("<canister_id>");
ICRC1Client client = new ICRC1Client(agent, canisterId);

Use the methods of the ICRC1Client to communicate with the ICRC1 canister:

// Get the name of the token
string name = await client.Name();

// Get the balance of a specific account
Account account = new Account
{
    Id = Principal.FromText("<account_id>")
};
UnboundedUInt balance = await client.BalanceOf(account);

// Transfer tokens from one account to another
TransferArgs transferArgs = new TransferArgs
{
    To = new Account
    {
        Id = Principal.FromText("<to_account_id>")
    },
    Amount = 1,
    Memo = "<memo>"
};
TransferResult transferResult = await client.Transfer(transferArgs);
Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
.NET Core netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.1 is compatible. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (3)

Showing the top 3 NuGet packages that depend on EdjCase.ICP.Agent:

Package Downloads
EdjCase.ICP.InternetIdentity

Package Description

EdjCase.ICP.WebSockets

Package Description

Qwer.Chains.Dfinity.Clients

Package Description

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
7.0.0-pre.1 131 10/27/2024
6.2.1 125 10/23/2024
6.2.0 131 10/21/2024
6.1.2 1,613 4/30/2024
6.1.1 158 4/17/2024
6.1.0 153 4/15/2024
6.0.0 180 3/21/2024
5.1.0 263 1/25/2024
5.0.0 1,197 1/12/2024
5.0.0-pre.2 120 12/13/2023
5.0.0-pre.1 82 12/11/2023
4.1.0 464 11/10/2023
4.0.1 250 11/1/2023
4.0.0 372 10/12/2023
4.0.0-pre.10 83 10/10/2023
4.0.0-pre.9 80 10/10/2023
4.0.0-pre.8 75 10/9/2023
4.0.0-pre.7 79 10/9/2023
4.0.0-pre.6 75 10/9/2023
4.0.0-pre.5 83 10/8/2023
4.0.0-pre.4 83 10/6/2023
4.0.0-pre.3 80 10/5/2023
4.0.0-pre.2 80 9/27/2023
4.0.0-pre.1 80 9/25/2023
3.2.2 487 9/22/2023
3.2.1 181 9/22/2023
3.2.0 681 8/2/2023
3.1.5 196 9/27/2023
3.1.4 299 7/20/2023
3.1.3 389 6/12/2023
3.1.2 472 5/11/2023
3.1.1 257 5/9/2023
3.1.0 243 5/9/2023
3.0.1 256 5/2/2023
3.0.0 269 5/1/2023
3.0.0-beta.1 124 4/17/2023
2.3.9 242 5/1/2023
2.3.8 271 4/28/2023
2.3.7 283 4/28/2023
2.3.6 290 4/28/2023
2.3.5 299 4/27/2023
2.3.4 277 4/27/2023
2.3.3 322 4/26/2023
2.3.2 297 4/26/2023
2.3.1 358 4/26/2023
2.3.0 307 4/25/2023
2.2.10 311 4/24/2023
2.2.9 274 4/24/2023
2.2.8 329 4/24/2023
2.2.7 374 4/17/2023
2.2.6 415 4/12/2023
2.2.5 308 4/12/2023
2.2.4 343 4/11/2023
2.2.3 332 4/11/2023
2.2.2 350 4/7/2023
2.2.1 305 4/7/2023
2.2.0 363 4/6/2023
2.1.1 419 3/30/2023
2.1.0 537 3/23/2023
2.0.8 427 3/20/2023
2.0.7 492 3/12/2023
2.0.2 423 3/10/2023
2.0.1 404 3/10/2023
2.0.0 421 3/8/2023
2.0.0-beta.26 117 3/8/2023
2.0.0-beta.25 123 3/8/2023
2.0.0-beta.24 124 3/7/2023
2.0.0-beta.23 121 3/6/2023
2.0.0-beta.22 123 3/1/2023
2.0.0-beta.21 138 2/28/2023
2.0.0-beta.20 126 2/20/2023
2.0.0-beta.19 130 2/14/2023
2.0.0-beta.18 128 2/14/2023
2.0.0-beta.17 121 2/14/2023
2.0.0-beta.16 123 2/11/2023
2.0.0-beta.15 125 2/10/2023
2.0.0-beta.14 135 2/6/2023
2.0.0-beta.13 148 2/3/2023
2.0.0-beta.12 142 2/2/2023
2.0.0-beta.11 140 1/30/2023
2.0.0-beta.10 137 1/23/2023
2.0.0-beta.9 147 1/19/2023
2.0.0-beta.8 145 1/19/2023
2.0.0-beta.7 143 1/12/2023
2.0.0-beta.6 144 12/31/2022
2.0.0-beta.5 135 12/30/2022
2.0.0-beta.4 138 12/21/2022
2.0.0-beta.3 142 12/19/2022
2.0.0-beta.2 142 12/10/2022
2.0.0-beta.1 136 12/2/2022
1.2.1 462 11/29/2022
1.2.0 428 11/28/2022
1.1.0 447 11/28/2022
1.0.3 425 11/25/2022
1.0.2 534 6/8/2022
1.0.1 534 6/7/2022
0.0.1-beta.20 160 6/1/2022
0.0.1-beta.19 164 5/20/2022
0.0.1-beta.18 165 5/20/2022
0.0.1-beta.14 163 5/19/2022
0.0.1-beta.13 164 5/18/2022
0.0.1-beta.3 188 5/16/2022
0.0.1-beta.2 186 5/11/2022
0.0.1-beta.1 157 5/11/2022