summaryrefslogtreecommitdiffstats
path: root/internal/client/crypto.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/client/crypto.go')
-rw-r--r--internal/client/crypto.go235
1 files changed, 235 insertions, 0 deletions
diff --git a/internal/client/crypto.go b/internal/client/crypto.go
new file mode 100644
index 0000000..ee145f9
--- /dev/null
+++ b/internal/client/crypto.go
@@ -0,0 +1,235 @@
+package client
+
+import (
+ "encoding/json"
+ "fmt"
+ "git.db.org.ai/dborg/internal/models"
+ "strings"
+)
+
+func (c *Client) GetBundleDetection(address string) (*models.CryptoResponse, error) {
+ path := fmt.Sprintf("/crypto/bundle-detection/%s", address)
+ data, err := c.Get(path, nil)
+ if err != nil {
+ return nil, err
+ }
+
+ var response models.CryptoResponse
+ if err := json.Unmarshal(data, &response); err != nil {
+ return nil, fmt.Errorf("failed to parse crypto response: %w", err)
+ }
+
+ return &response, nil
+}
+
+func (c *Client) GetCrossTraders(addresses string) (*models.CryptoResponse, error) {
+ path := fmt.Sprintf("/crypto/cross-traders/%s", addresses)
+ data, err := c.Get(path, nil)
+ if err != nil {
+ return nil, err
+ }
+
+ var response models.CryptoResponse
+ if err := json.Unmarshal(data, &response); err != nil {
+ return nil, fmt.Errorf("failed to parse crypto response: %w", err)
+ }
+
+ return &response, nil
+}
+
+func (c *Client) GetEarlyAdopters(address string) (*models.CryptoResponse, error) {
+ path := fmt.Sprintf("/crypto/early-adopters/%s", address)
+ data, err := c.Get(path, nil)
+ if err != nil {
+ return nil, err
+ }
+
+ var response models.CryptoResponse
+ if err := json.Unmarshal(data, &response); err != nil {
+ return nil, fmt.Errorf("failed to parse crypto response: %w", err)
+ }
+
+ return &response, nil
+}
+
+func (c *Client) GetFloorHolders(address string) (*models.CryptoResponse, error) {
+ path := fmt.Sprintf("/crypto/floor-holders/%s", address)
+ data, err := c.Get(path, nil)
+ if err != nil {
+ return nil, err
+ }
+
+ var response models.CryptoResponse
+ if err := json.Unmarshal(data, &response); err != nil {
+ return nil, fmt.Errorf("failed to parse crypto response: %w", err)
+ }
+
+ return &response, nil
+}
+
+func (c *Client) GetFreshAccounts(address string) (*models.CryptoResponse, error) {
+ path := fmt.Sprintf("/crypto/fresh-accounts/%s", address)
+ data, err := c.Get(path, nil)
+ if err != nil {
+ return nil, err
+ }
+
+ var response models.CryptoResponse
+ if err := json.Unmarshal(data, &response); err != nil {
+ return nil, fmt.Errorf("failed to parse crypto response: %w", err)
+ }
+
+ return &response, nil
+}
+
+func (c *Client) GetFundingSource(address string) (*models.CryptoResponse, error) {
+ path := fmt.Sprintf("/crypto/funding-source/%s", address)
+ data, err := c.Get(path, nil)
+ if err != nil {
+ return nil, err
+ }
+
+ var response models.CryptoResponse
+ if err := json.Unmarshal(data, &response); err != nil {
+ return nil, fmt.Errorf("failed to parse crypto response: %w", err)
+ }
+
+ return &response, nil
+}
+
+func (c *Client) GetGraduationStats() (*models.CryptoResponse, error) {
+ data, err := c.Get("/crypto/graduation-stats", nil)
+ if err != nil {
+ return nil, err
+ }
+
+ var response models.CryptoResponse
+ if err := json.Unmarshal(data, &response); err != nil {
+ return nil, fmt.Errorf("failed to parse crypto response: %w", err)
+ }
+
+ return &response, nil
+}
+
+func (c *Client) GetLaunchParticipants(address string) (*models.CryptoResponse, error) {
+ path := fmt.Sprintf("/crypto/launch-participants/%s", address)
+ data, err := c.Get(path, nil)
+ if err != nil {
+ return nil, err
+ }
+
+ var response models.CryptoResponse
+ if err := json.Unmarshal(data, &response); err != nil {
+ return nil, fmt.Errorf("failed to parse crypto response: %w", err)
+ }
+
+ return &response, nil
+}
+
+func (c *Client) GetLiquidity(address string) (*models.CryptoResponse, error) {
+ path := fmt.Sprintf("/crypto/liquidity/%s", address)
+ data, err := c.Get(path, nil)
+ if err != nil {
+ return nil, err
+ }
+
+ var response models.CryptoResponse
+ if err := json.Unmarshal(data, &response); err != nil {
+ return nil, fmt.Errorf("failed to parse crypto response: %w", err)
+ }
+
+ return &response, nil
+}
+
+func (c *Client) GetOwnerIntel(address string) (*models.CryptoResponse, error) {
+ path := fmt.Sprintf("/crypto/owner-intel/%s", address)
+ data, err := c.Get(path, nil)
+ if err != nil {
+ return nil, err
+ }
+
+ var response models.CryptoResponse
+ if err := json.Unmarshal(data, &response); err != nil {
+ return nil, fmt.Errorf("failed to parse crypto response: %w", err)
+ }
+
+ return &response, nil
+}
+
+func (c *Client) GetOwnershipDistribution(address string) (*models.CryptoResponse, error) {
+ path := fmt.Sprintf("/crypto/ownership-distribution/%s", address)
+ data, err := c.Get(path, nil)
+ if err != nil {
+ return nil, err
+ }
+
+ var response models.CryptoResponse
+ if err := json.Unmarshal(data, &response); err != nil {
+ return nil, fmt.Errorf("failed to parse crypto response: %w", err)
+ }
+
+ return &response, nil
+}
+
+func (c *Client) GetPortfolio(address string) (*models.CryptoResponse, error) {
+ path := fmt.Sprintf("/crypto/portfolio/%s", address)
+ data, err := c.Get(path, nil)
+ if err != nil {
+ return nil, err
+ }
+
+ var response models.CryptoResponse
+ if err := json.Unmarshal(data, &response); err != nil {
+ return nil, fmt.Errorf("failed to parse crypto response: %w", err)
+ }
+
+ return &response, nil
+}
+
+func (c *Client) GetTopOwners(address string) (*models.CryptoResponse, error) {
+ path := fmt.Sprintf("/crypto/top-owners/%s", address)
+ data, err := c.Get(path, nil)
+ if err != nil {
+ return nil, err
+ }
+
+ var response models.CryptoResponse
+ if err := json.Unmarshal(data, &response); err != nil {
+ return nil, fmt.Errorf("failed to parse crypto response: %w", err)
+ }
+
+ return &response, nil
+}
+
+func (c *Client) GetWhaleIntel(address string) (*models.CryptoResponse, error) {
+ path := fmt.Sprintf("/crypto/whale-intel/%s", address)
+ data, err := c.Get(path, nil)
+ if err != nil {
+ return nil, err
+ }
+
+ var response models.CryptoResponse
+ if err := json.Unmarshal(data, &response); err != nil {
+ return nil, fmt.Errorf("failed to parse crypto response: %w", err)
+ }
+
+ return &response, nil
+}
+
+func ValidateCryptoAddress(address string) error {
+ if len(address) == 0 {
+ return fmt.Errorf("address cannot be empty")
+ }
+ return nil
+}
+
+func ValidateCryptoAddresses(addresses string) error {
+ if len(addresses) == 0 {
+ return fmt.Errorf("addresses cannot be empty")
+ }
+ parts := strings.Split(addresses, ",")
+ if len(parts) < 2 {
+ return fmt.Errorf("at least 2 addresses required for cross-trader analysis")
+ }
+ return nil
+}