/ main.go
main.go
 1  package main
 2  
 3  import (
 4  	"fmt"
 5  	"log"
 6  
 7  	"icp-agent/internal/agent"
 8  	"icp-agent/internal/canister"
 9  	"icp-agent/internal/identity"
10  	"icp-agent/internal/ledger"
11  	"icp-agent/internal/principal"
12  )
13  
14  func main() {
15  	fmt.Println("ICP Agent - Go Implementation")
16  	fmt.Println("================================")
17  
18  	// Example: Create an Ed25519 identity
19  	iden, err := identity.GenerateEd25519Identity()
20  	if err != nil {
21  		log.Fatalf("Failed to generate identity: %v", err)
22  	}
23  	sender, _ := iden.Sender()
24  	fmt.Printf("Identity created: %s\n", sender)
25  
26  	// Example: Create an agent
27  	agentBuilder := agent.NewAgentBuilder()
28  	a, err := agentBuilder.
29  		WithURL("https://ic0.app").
30  		WithIdentity(iden).
31  		Build()
32  	if err != nil {
33  		log.Fatalf("Failed to build agent: %v", err)
34  	}
35  	fmt.Printf("Agent created with URL: %s\n", a.GetURL())
36  
37  	// Example: Create a principal
38  	p := principal.ManagementCanister()
39  	fmt.Printf("Management canister: %s\n", p.String())
40  
41  	// Example: Create a canister
42  	can, err := canister.NewCanister("ryjl3-tyaaa-aaaaa-aaaba-cai", a)
43  	if err != nil {
44  		log.Fatalf("Failed to create canister: %v", err)
45  	}
46  	fmt.Printf("Canister ID: %s\n", can.ID().String())
47  
48  	// Example: Create an account ID
49  	accountID, err := ledger.NewAccountID(p, nil)
50  	if err != nil {
51  		log.Fatalf("Failed to create account ID: %v", err)
52  	}
53  	fmt.Printf("Account ID: %s\n", accountID.ToHex())
54  
55  	fmt.Println("\n================================")
56  	fmt.Println("All modules working correctly!")
57  }