fere-sdk 0.5.0.dev49__tar.gz → 0.6.0.dev51__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {fere_sdk-0.5.0.dev49 → fere_sdk-0.6.0.dev51}/.gitignore +9 -1
- {fere_sdk-0.5.0.dev49 → fere_sdk-0.6.0.dev51}/PKG-INFO +1 -1
- {fere_sdk-0.5.0.dev49 → fere_sdk-0.6.0.dev51}/pyproject.toml +1 -1
- {fere_sdk-0.5.0.dev49 → fere_sdk-0.6.0.dev51}/src/fere_sdk/client.py +0 -24
- {fere_sdk-0.5.0.dev49 → fere_sdk-0.6.0.dev51}/src/fere_sdk/low_level.py +0 -45
- {fere_sdk-0.5.0.dev49 → fere_sdk-0.6.0.dev51}/src/fere_sdk/models.py +0 -44
- {fere_sdk-0.5.0.dev49 → fere_sdk-0.6.0.dev51}/README.md +0 -0
- {fere_sdk-0.5.0.dev49 → fere_sdk-0.6.0.dev51}/src/fere_sdk/__init__.py +0 -0
- {fere_sdk-0.5.0.dev49 → fere_sdk-0.6.0.dev51}/src/fere_sdk/auth.py +0 -0
- {fere_sdk-0.5.0.dev49 → fere_sdk-0.6.0.dev51}/src/fere_sdk/perp_models.py +0 -0
- {fere_sdk-0.5.0.dev49 → fere_sdk-0.6.0.dev51}/src/fere_sdk/spot_models.py +0 -0
- {fere_sdk-0.5.0.dev49 → fere_sdk-0.6.0.dev51}/src/fere_sdk/timeouts.py +0 -0
|
@@ -58,6 +58,11 @@ dev/logs/*
|
|
|
58
58
|
# Ralph Loop plugin runtime state (scratchpad + done flag)
|
|
59
59
|
.cursor/ralph/
|
|
60
60
|
|
|
61
|
+
# Cursor Plan Mode + canvases (workspace copies; bind-mounted / synced
|
|
62
|
+
# over Cursor's default paths so they survive Devcontainer rebuilds)
|
|
63
|
+
.cursor/plans/
|
|
64
|
+
.cursor/canvases/
|
|
65
|
+
|
|
61
66
|
# Cursor SEO skill — regenerated report JSON (not source)
|
|
62
67
|
.cursor/skills/seo-agent/artifacts/
|
|
63
68
|
.claude/skills/seo-agent/artifacts/
|
|
@@ -84,7 +89,7 @@ webapp/.impeccable/
|
|
|
84
89
|
.agentmemory/data/
|
|
85
90
|
.devcontainer/agentmemory-mcp/node_modules/
|
|
86
91
|
|
|
87
|
-
# Local GLASS mock / design reference (not in git). Tokens: webapp/DESIGN.md + app/
|
|
92
|
+
# Local GLASS mock / design reference (not in git). Tokens: webapp/DESIGN.md + app/css/shared.css
|
|
88
93
|
Fere Glass Design System (Space Grotesk).html
|
|
89
94
|
fere-onboarding-zero-states/
|
|
90
95
|
fereonboardingzerostates.zip
|
|
@@ -92,6 +97,9 @@ fereonboardingzerostates.zip
|
|
|
92
97
|
# Local GEO upstream reference (optional clone; not part of the product tree)
|
|
93
98
|
geo-seo/
|
|
94
99
|
|
|
100
|
+
# Playwright / local test output (repo root — webapp has its own ignores)
|
|
101
|
+
test-results/
|
|
102
|
+
|
|
95
103
|
# Eval output
|
|
96
104
|
compare_results.json
|
|
97
105
|
.secrets
|
|
@@ -27,13 +27,11 @@ from .models import (
|
|
|
27
27
|
PerpFundRequest,
|
|
28
28
|
PerpOpenRequest,
|
|
29
29
|
PerpWithdrawRequest,
|
|
30
|
-
SecurityCheckResponse,
|
|
31
30
|
SpotBuyRequest,
|
|
32
31
|
SpotCancelRequest,
|
|
33
32
|
SpotSellRequest,
|
|
34
33
|
SpotTpSlRequest,
|
|
35
34
|
SwapRequest,
|
|
36
|
-
TokenToCheck,
|
|
37
35
|
WithdrawRequest,
|
|
38
36
|
)
|
|
39
37
|
from .timeouts import DEFAULT_TIMEOUT
|
|
@@ -238,28 +236,6 @@ class FereClient:
|
|
|
238
236
|
)
|
|
239
237
|
return await self._api.set_hooks(req)
|
|
240
238
|
|
|
241
|
-
async def check_token_security(
|
|
242
|
-
self,
|
|
243
|
-
tokens: list[TokenToCheck] | list[dict],
|
|
244
|
-
) -> SecurityCheckResponse:
|
|
245
|
-
"""Pre-check tokens for honeypot / scam / rug-pull flags.
|
|
246
|
-
|
|
247
|
-
Pass a list of TokenToCheck or plain dicts with token_address
|
|
248
|
-
and chain_id.
|
|
249
|
-
"""
|
|
250
|
-
normalized: list[TokenToCheck] = []
|
|
251
|
-
for t in tokens:
|
|
252
|
-
if isinstance(t, TokenToCheck):
|
|
253
|
-
normalized.append(t)
|
|
254
|
-
else:
|
|
255
|
-
normalized.append(
|
|
256
|
-
TokenToCheck(
|
|
257
|
-
token_address=t["token_address"],
|
|
258
|
-
chain_id=t["chain_id"],
|
|
259
|
-
)
|
|
260
|
-
)
|
|
261
|
-
return await self._api.check_token_security(normalized)
|
|
262
|
-
|
|
263
239
|
# ----------------------------------------------------------
|
|
264
240
|
# Earn (blocks until complete)
|
|
265
241
|
# ----------------------------------------------------------
|
|
@@ -21,8 +21,6 @@ from .models import (
|
|
|
21
21
|
PerpFundRequest,
|
|
22
22
|
PerpOpenRequest,
|
|
23
23
|
PerpWithdrawRequest,
|
|
24
|
-
SecurityCheckResponse,
|
|
25
|
-
SecurityCheckSummary,
|
|
26
24
|
SpotBuyRequest,
|
|
27
25
|
SpotCancelRequest,
|
|
28
26
|
SpotSellRequest,
|
|
@@ -31,8 +29,6 @@ from .models import (
|
|
|
31
29
|
TaskResponse,
|
|
32
30
|
TaskStatusResponse,
|
|
33
31
|
TokenInfo,
|
|
34
|
-
TokenSecurityResult,
|
|
35
|
-
TokenToCheck,
|
|
36
32
|
WithdrawRequest,
|
|
37
33
|
)
|
|
38
34
|
from .timeouts import DEFAULT_TIMEOUT
|
|
@@ -319,47 +315,6 @@ class FereAPI:
|
|
|
319
315
|
"""POST /v1/hooks"""
|
|
320
316
|
return await self._authed_post("/v1/hooks", request.to_dict())
|
|
321
317
|
|
|
322
|
-
# ----------------------------------------------------------
|
|
323
|
-
# Security
|
|
324
|
-
# ----------------------------------------------------------
|
|
325
|
-
|
|
326
|
-
async def check_token_security(
|
|
327
|
-
self,
|
|
328
|
-
tokens: list[TokenToCheck],
|
|
329
|
-
) -> SecurityCheckResponse:
|
|
330
|
-
"""POST /v1/security/check.
|
|
331
|
-
|
|
332
|
-
Pre-check whether output tokens have been flagged by Honeypot.is
|
|
333
|
-
(EVM) or RugCheck.xyz (Solana) before submitting a swap.
|
|
334
|
-
"""
|
|
335
|
-
data = await self._authed_post(
|
|
336
|
-
"/v1/security/check",
|
|
337
|
-
{"tokens": [t.to_dict() for t in tokens]},
|
|
338
|
-
)
|
|
339
|
-
results = [
|
|
340
|
-
TokenSecurityResult(
|
|
341
|
-
token_address=r["token_address"],
|
|
342
|
-
chain_id=r["chain_id"],
|
|
343
|
-
allowed=r["allowed"],
|
|
344
|
-
status=r["status"],
|
|
345
|
-
provider=r["provider"],
|
|
346
|
-
reason=r.get("reason"),
|
|
347
|
-
risk_details=r.get("risk_details"),
|
|
348
|
-
)
|
|
349
|
-
for r in data.get("results", [])
|
|
350
|
-
]
|
|
351
|
-
s = data.get("summary", {})
|
|
352
|
-
summary = SecurityCheckSummary(
|
|
353
|
-
total=s.get("total", 0),
|
|
354
|
-
passed=s.get("passed", 0),
|
|
355
|
-
failed=s.get("failed", 0),
|
|
356
|
-
warning=s.get("warning", 0),
|
|
357
|
-
api_unavailable=s.get("api_unavailable", 0),
|
|
358
|
-
unsupported_chain=s.get("unsupported_chain", 0),
|
|
359
|
-
skipped=s.get("skipped", 0),
|
|
360
|
-
)
|
|
361
|
-
return SecurityCheckResponse(results=results, summary=summary)
|
|
362
|
-
|
|
363
318
|
# ----------------------------------------------------------
|
|
364
319
|
# Wallets
|
|
365
320
|
# ----------------------------------------------------------
|
|
@@ -44,10 +44,6 @@ __all__ = [
|
|
|
44
44
|
"SpotSellRequest",
|
|
45
45
|
"SpotTpSlRequest",
|
|
46
46
|
"SpotCancelRequest",
|
|
47
|
-
"TokenToCheck",
|
|
48
|
-
"TokenSecurityResult",
|
|
49
|
-
"SecurityCheckSummary",
|
|
50
|
-
"SecurityCheckResponse",
|
|
51
47
|
"TaskTimeoutError",
|
|
52
48
|
]
|
|
53
49
|
|
|
@@ -128,46 +124,6 @@ class SwapRequest:
|
|
|
128
124
|
return d
|
|
129
125
|
|
|
130
126
|
|
|
131
|
-
@dataclass
|
|
132
|
-
class TokenToCheck:
|
|
133
|
-
token_address: str
|
|
134
|
-
chain_id: int | str
|
|
135
|
-
|
|
136
|
-
def to_dict(self) -> dict:
|
|
137
|
-
return {
|
|
138
|
-
"token_address": self.token_address,
|
|
139
|
-
"chain_id": self.chain_id,
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
@dataclass
|
|
144
|
-
class TokenSecurityResult:
|
|
145
|
-
token_address: str
|
|
146
|
-
chain_id: int
|
|
147
|
-
allowed: bool
|
|
148
|
-
status: str
|
|
149
|
-
provider: str
|
|
150
|
-
reason: str | None = None
|
|
151
|
-
risk_details: dict | None = None
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
@dataclass
|
|
155
|
-
class SecurityCheckSummary:
|
|
156
|
-
total: int
|
|
157
|
-
passed: int
|
|
158
|
-
failed: int
|
|
159
|
-
warning: int
|
|
160
|
-
api_unavailable: int
|
|
161
|
-
unsupported_chain: int = 0
|
|
162
|
-
skipped: int = 0
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
@dataclass
|
|
166
|
-
class SecurityCheckResponse:
|
|
167
|
-
results: list[TokenSecurityResult]
|
|
168
|
-
summary: SecurityCheckSummary
|
|
169
|
-
|
|
170
|
-
|
|
171
127
|
@dataclass
|
|
172
128
|
class LimitOrderRequest:
|
|
173
129
|
chain_id_in: int
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|