@namera-ai/api 0.0.0
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.
- package/README.md +58 -0
- package/dist/common.js +13 -0
- package/dist/common.js.map +1 -0
- package/dist/index.d.ts +32 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +40 -0
- package/dist/index.js.map +1 -0
- package/dist/middlewares/admin.d.ts +25 -0
- package/dist/middlewares/admin.d.ts.map +1 -0
- package/dist/middlewares/admin.js +18 -0
- package/dist/middlewares/admin.js.map +1 -0
- package/dist/middlewares/auth.d.ts +640 -0
- package/dist/middlewares/auth.d.ts.map +1 -0
- package/dist/middlewares/auth.js +26 -0
- package/dist/middlewares/auth.js.map +1 -0
- package/dist/middlewares/index.d.ts +3 -0
- package/dist/routes/address-metadata.d.ts +147 -0
- package/dist/routes/address-metadata.d.ts.map +1 -0
- package/dist/routes/address-metadata.js +24 -0
- package/dist/routes/address-metadata.js.map +1 -0
- package/dist/routes/api-key.d.ts +864 -0
- package/dist/routes/api-key.d.ts.map +1 -0
- package/dist/routes/api-key.js +31 -0
- package/dist/routes/api-key.js.map +1 -0
- package/dist/routes/auth/core/index.d.ts +4 -0
- package/dist/routes/auth/core/magic-link.d.ts +34 -0
- package/dist/routes/auth/core/magic-link.d.ts.map +1 -0
- package/dist/routes/auth/core/magic-link.js +25 -0
- package/dist/routes/auth/core/magic-link.js.map +1 -0
- package/dist/routes/auth/core/session.d.ts +805 -0
- package/dist/routes/auth/core/session.d.ts.map +1 -0
- package/dist/routes/auth/core/session.js +31 -0
- package/dist/routes/auth/core/session.js.map +1 -0
- package/dist/routes/auth/core/user.d.ts +45 -0
- package/dist/routes/auth/core/user.d.ts.map +1 -0
- package/dist/routes/auth/core/user.js +15 -0
- package/dist/routes/auth/core/user.js.map +1 -0
- package/dist/routes/auth/index.d.ts +11 -0
- package/dist/routes/auth/notification.d.ts +392 -0
- package/dist/routes/auth/notification.d.ts.map +1 -0
- package/dist/routes/auth/notification.js +40 -0
- package/dist/routes/auth/notification.js.map +1 -0
- package/dist/routes/auth/oauth.d.ts +1347 -0
- package/dist/routes/auth/oauth.d.ts.map +1 -0
- package/dist/routes/auth/oauth.js +62 -0
- package/dist/routes/auth/oauth.js.map +1 -0
- package/dist/routes/auth/organization/index.d.ts +4 -0
- package/dist/routes/auth/organization/invitation.d.ts +400 -0
- package/dist/routes/auth/organization/invitation.d.ts.map +1 -0
- package/dist/routes/auth/organization/invitation.js +55 -0
- package/dist/routes/auth/organization/invitation.js.map +1 -0
- package/dist/routes/auth/organization/members.d.ts +250 -0
- package/dist/routes/auth/organization/members.d.ts.map +1 -0
- package/dist/routes/auth/organization/members.js +37 -0
- package/dist/routes/auth/organization/members.js.map +1 -0
- package/dist/routes/auth/organization/organization.d.ts +196 -0
- package/dist/routes/auth/organization/organization.d.ts.map +1 -0
- package/dist/routes/auth/organization/organization.js +31 -0
- package/dist/routes/auth/organization/organization.js.map +1 -0
- package/dist/routes/beta-invite.d.ts +24 -0
- package/dist/routes/beta-invite.d.ts.map +1 -0
- package/dist/routes/beta-invite.js +20 -0
- package/dist/routes/beta-invite.js.map +1 -0
- package/dist/routes/billing.d.ts +34 -0
- package/dist/routes/billing.d.ts.map +1 -0
- package/dist/routes/billing.js +14 -0
- package/dist/routes/billing.js.map +1 -0
- package/dist/routes/dashboard.d.ts +58 -0
- package/dist/routes/dashboard.d.ts.map +1 -0
- package/dist/routes/dashboard.js +14 -0
- package/dist/routes/dashboard.js.map +1 -0
- package/dist/routes/ens.d.ts +14 -0
- package/dist/routes/ens.d.ts.map +1 -0
- package/dist/routes/ens.js +15 -0
- package/dist/routes/ens.js.map +1 -0
- package/dist/routes/execution.d.ts +816 -0
- package/dist/routes/execution.d.ts.map +1 -0
- package/dist/routes/execution.js +50 -0
- package/dist/routes/execution.js.map +1 -0
- package/dist/routes/health.d.ts +10 -0
- package/dist/routes/health.d.ts.map +1 -0
- package/dist/routes/health.js +10 -0
- package/dist/routes/health.js.map +1 -0
- package/dist/routes/index.d.ts +23 -0
- package/dist/routes/portfolio.d.ts +94 -0
- package/dist/routes/portfolio.d.ts.map +1 -0
- package/dist/routes/portfolio.js +16 -0
- package/dist/routes/portfolio.js.map +1 -0
- package/dist/routes/session-key.d.ts +1844 -0
- package/dist/routes/session-key.d.ts.map +1 -0
- package/dist/routes/session-key.js +55 -0
- package/dist/routes/session-key.js.map +1 -0
- package/dist/routes/signature.d.ts +195 -0
- package/dist/routes/signature.d.ts.map +1 -0
- package/dist/routes/signature.js +38 -0
- package/dist/routes/signature.js.map +1 -0
- package/dist/routes/waitlist.d.ts +42 -0
- package/dist/routes/waitlist.d.ts.map +1 -0
- package/dist/routes/waitlist.js +27 -0
- package/dist/routes/waitlist.js.map +1 -0
- package/dist/routes/wallet.d.ts +547 -0
- package/dist/routes/wallet.d.ts.map +1 -0
- package/dist/routes/wallet.js +50 -0
- package/dist/routes/wallet.js.map +1 -0
- package/package.json +61 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"execution.d.ts","names":[],"sources":["../../src/routes/execution.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cA6Ba,uBAAuB"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { CommonErrors } from "../common.js";
|
|
2
|
+
import { Authorization } from "../middlewares/auth.js";
|
|
3
|
+
import { HttpApiEndpoint, HttpApiGroup, OpenApi } from "effect/unstable/httpapi";
|
|
4
|
+
import { BillingErrors, ExecutionError, ExecutionNotFoundError, ExecutionSubmissionNotFoundError } from "@namera-ai/protocol";
|
|
5
|
+
import { CompleteExecutionRequest, CompleteExecutionResponse, ExecuteRequest, ExecuteRequestHeaders, ExecuteResponse, GetExecutionRequest, GetExecutionResponse, GetExecutionSubmissionRequest, GetExecutionSubmissionResponse, ListExecutionsRequest, ListExecutionsResponse, PrepareExecutionRequest, PrepareExecutionResponse, SimulateExecutionRequest, SimulateExecutionResponse } from "@namera-ai/protocol/dto";
|
|
6
|
+
|
|
7
|
+
//#region src/routes/execution.ts
|
|
8
|
+
var ExecutionGroup = class extends HttpApiGroup.make("execution").add(HttpApiEndpoint.post("prepare", "/prepare", {
|
|
9
|
+
payload: PrepareExecutionRequest,
|
|
10
|
+
headers: ExecuteRequestHeaders,
|
|
11
|
+
success: PrepareExecutionResponse,
|
|
12
|
+
error: [
|
|
13
|
+
ExecutionError,
|
|
14
|
+
...BillingErrors,
|
|
15
|
+
...CommonErrors
|
|
16
|
+
]
|
|
17
|
+
}).annotate(OpenApi.Summary, "Prepare an operation for a locally held session signer"), HttpApiEndpoint.post("complete", "/complete", {
|
|
18
|
+
payload: CompleteExecutionRequest,
|
|
19
|
+
success: CompleteExecutionResponse,
|
|
20
|
+
error: [ExecutionError, ...CommonErrors]
|
|
21
|
+
}).annotate(OpenApi.Summary, "Accept a local signature and queue the exact prepared operation")).add(HttpApiEndpoint.post("simulate", "/simulate", {
|
|
22
|
+
payload: SimulateExecutionRequest,
|
|
23
|
+
success: SimulateExecutionResponse,
|
|
24
|
+
error: [ExecutionError, ...CommonErrors]
|
|
25
|
+
}).annotate(OpenApi.Summary, "Simulate an operation and evaluate authorized session-key policies")).add(HttpApiEndpoint.post("execute", "/", {
|
|
26
|
+
payload: ExecuteRequest,
|
|
27
|
+
headers: ExecuteRequestHeaders,
|
|
28
|
+
success: ExecuteResponse,
|
|
29
|
+
error: [
|
|
30
|
+
ExecutionError,
|
|
31
|
+
...BillingErrors,
|
|
32
|
+
...CommonErrors
|
|
33
|
+
]
|
|
34
|
+
}).annotate(OpenApi.Summary, "Execute an operation through an authorized session key")).add(HttpApiEndpoint.get("getSubmission", "/submissions/:submissionId", {
|
|
35
|
+
params: GetExecutionSubmissionRequest,
|
|
36
|
+
success: GetExecutionSubmissionResponse,
|
|
37
|
+
error: [ExecutionSubmissionNotFoundError, ...CommonErrors]
|
|
38
|
+
}).annotate(OpenApi.Summary, "Get the status of an API key's execution submission"), HttpApiEndpoint.get("get", "/:executionId", {
|
|
39
|
+
params: GetExecutionRequest,
|
|
40
|
+
success: GetExecutionResponse,
|
|
41
|
+
error: [ExecutionNotFoundError, ...CommonErrors]
|
|
42
|
+
}).annotate(OpenApi.Summary, "Get a confirmed execution"), HttpApiEndpoint.get("list", "/", {
|
|
43
|
+
query: ListExecutionsRequest,
|
|
44
|
+
success: ListExecutionsResponse,
|
|
45
|
+
error: CommonErrors
|
|
46
|
+
}).annotate(OpenApi.Summary, "List confirmed executions for the active organization")).annotate(OpenApi.Description, "Namespace-discriminated programmable wallet executions").middleware(Authorization).prefix("/executions") {};
|
|
47
|
+
|
|
48
|
+
//#endregion
|
|
49
|
+
export { ExecutionGroup };
|
|
50
|
+
//# sourceMappingURL=execution.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"execution.js","names":[],"sources":["../../src/routes/execution.ts"],"sourcesContent":["import { HttpApiEndpoint, HttpApiGroup, OpenApi } from \"effect/unstable/httpapi\";\n\nimport {\n BillingErrors,\n ExecutionError,\n ExecutionNotFoundError,\n ExecutionSubmissionNotFoundError,\n} from \"@namera-ai/protocol\";\nimport {\n ExecuteRequest,\n ExecuteRequestHeaders,\n ExecuteResponse,\n PrepareExecutionRequest,\n PrepareExecutionResponse,\n CompleteExecutionRequest,\n CompleteExecutionResponse,\n GetExecutionRequest,\n GetExecutionResponse,\n GetExecutionSubmissionRequest,\n GetExecutionSubmissionResponse,\n ListExecutionsRequest,\n ListExecutionsResponse,\n SimulateExecutionRequest,\n SimulateExecutionResponse,\n} from \"@namera-ai/protocol/dto\";\n\nimport { CommonErrors } from \"#/common\";\nimport { Authorization } from \"#/middlewares/index\";\n\nexport class ExecutionGroup extends HttpApiGroup.make(\"execution\")\n .add(\n HttpApiEndpoint.post(\"prepare\", \"/prepare\", {\n payload: PrepareExecutionRequest,\n headers: ExecuteRequestHeaders,\n success: PrepareExecutionResponse,\n error: [ExecutionError, ...BillingErrors, ...CommonErrors],\n }).annotate(OpenApi.Summary, \"Prepare an operation for a locally held session signer\"),\n HttpApiEndpoint.post(\"complete\", \"/complete\", {\n payload: CompleteExecutionRequest,\n success: CompleteExecutionResponse,\n error: [ExecutionError, ...CommonErrors],\n }).annotate(OpenApi.Summary, \"Accept a local signature and queue the exact prepared operation\"),\n )\n .add(\n HttpApiEndpoint.post(\"simulate\", \"/simulate\", {\n payload: SimulateExecutionRequest,\n success: SimulateExecutionResponse,\n error: [ExecutionError, ...CommonErrors],\n }).annotate(\n OpenApi.Summary,\n \"Simulate an operation and evaluate authorized session-key policies\",\n ),\n )\n .add(\n HttpApiEndpoint.post(\"execute\", \"/\", {\n payload: ExecuteRequest,\n headers: ExecuteRequestHeaders,\n success: ExecuteResponse,\n error: [ExecutionError, ...BillingErrors, ...CommonErrors],\n }).annotate(OpenApi.Summary, \"Execute an operation through an authorized session key\"),\n )\n .add(\n HttpApiEndpoint.get(\"getSubmission\", \"/submissions/:submissionId\", {\n params: GetExecutionSubmissionRequest,\n success: GetExecutionSubmissionResponse,\n error: [ExecutionSubmissionNotFoundError, ...CommonErrors],\n }).annotate(OpenApi.Summary, \"Get the status of an API key's execution submission\"),\n HttpApiEndpoint.get(\"get\", \"/:executionId\", {\n params: GetExecutionRequest,\n success: GetExecutionResponse,\n error: [ExecutionNotFoundError, ...CommonErrors],\n }).annotate(OpenApi.Summary, \"Get a confirmed execution\"),\n HttpApiEndpoint.get(\"list\", \"/\", {\n query: ListExecutionsRequest,\n success: ListExecutionsResponse,\n error: CommonErrors,\n }).annotate(OpenApi.Summary, \"List confirmed executions for the active organization\"),\n )\n .annotate(OpenApi.Description, \"Namespace-discriminated programmable wallet executions\")\n .middleware(Authorization)\n .prefix(\"/executions\") {}\n"],"mappings":";;;;;;;AA6BA,IAAa,iBAAb,cAAoC,aAAa,KAAK,WAAW,CAAC,CAC/D,IACC,gBAAgB,KAAK,WAAW,YAAY;CAC1C,SAAS;CACT,SAAS;CACT,SAAS;CACT,OAAO;EAAC;EAAgB,GAAG;EAAe,GAAG;CAAY;AAC3D,CAAC,CAAC,CAAC,SAAS,QAAQ,SAAS,wDAAwD,GACrF,gBAAgB,KAAK,YAAY,aAAa;CAC5C,SAAS;CACT,SAAS;CACT,OAAO,CAAC,gBAAgB,GAAG,YAAY;AACzC,CAAC,CAAC,CAAC,SAAS,QAAQ,SAAS,iEAAiE,CAChG,CAAC,CACA,IACC,gBAAgB,KAAK,YAAY,aAAa;CAC5C,SAAS;CACT,SAAS;CACT,OAAO,CAAC,gBAAgB,GAAG,YAAY;AACzC,CAAC,CAAC,CAAC,SACD,QAAQ,SACR,oEACF,CACF,CAAC,CACA,IACC,gBAAgB,KAAK,WAAW,KAAK;CACnC,SAAS;CACT,SAAS;CACT,SAAS;CACT,OAAO;EAAC;EAAgB,GAAG;EAAe,GAAG;CAAY;AAC3D,CAAC,CAAC,CAAC,SAAS,QAAQ,SAAS,wDAAwD,CACvF,CAAC,CACA,IACC,gBAAgB,IAAI,iBAAiB,8BAA8B;CACjE,QAAQ;CACR,SAAS;CACT,OAAO,CAAC,kCAAkC,GAAG,YAAY;AAC3D,CAAC,CAAC,CAAC,SAAS,QAAQ,SAAS,qDAAqD,GAClF,gBAAgB,IAAI,OAAO,iBAAiB;CAC1C,QAAQ;CACR,SAAS;CACT,OAAO,CAAC,wBAAwB,GAAG,YAAY;AACjD,CAAC,CAAC,CAAC,SAAS,QAAQ,SAAS,2BAA2B,GACxD,gBAAgB,IAAI,QAAQ,KAAK;CAC/B,OAAO;CACP,SAAS;CACT,OAAO;AACT,CAAC,CAAC,CAAC,SAAS,QAAQ,SAAS,uDAAuD,CACtF,CAAC,CACA,SAAS,QAAQ,aAAa,wDAAwD,CAAC,CACvF,WAAW,aAAa,CAAC,CACzB,OAAO,aAAa,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { HttpApiEndpoint, HttpApiGroup } from "effect/unstable/httpapi";
|
|
2
|
+
import { Schema } from "effect";
|
|
3
|
+
//#region src/routes/health.d.ts
|
|
4
|
+
declare const HealthGroup_base: HttpApiGroup.HttpApiGroup<"health", HttpApiEndpoint.HttpApiEndpoint<"health", "GET", "/health", never, never, never, never, Schema.toCodecJson<Schema.Struct<{
|
|
5
|
+
readonly status: Schema.Boolean;
|
|
6
|
+
}>>, never, never, never>, false>;
|
|
7
|
+
declare class HealthGroup extends HealthGroup_base {}
|
|
8
|
+
//#endregion
|
|
9
|
+
export { HealthGroup };
|
|
10
|
+
//# sourceMappingURL=health.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"health.d.ts","names":[],"sources":["../../src/routes/health.ts"],"mappings":";;;;;;cAOa,oBAAoB"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { HttpApiEndpoint, HttpApiGroup, OpenApi } from "effect/unstable/httpapi";
|
|
2
|
+
import { Schema } from "effect";
|
|
3
|
+
|
|
4
|
+
//#region src/routes/health.ts
|
|
5
|
+
const HealthResponse = Schema.Struct({ status: Schema.Boolean }).annotate({ identifier: "HealthResponse" });
|
|
6
|
+
var HealthGroup = class extends HttpApiGroup.make("health").add(HttpApiEndpoint.get("health", "/health", { success: HealthResponse }).annotate(OpenApi.Summary, "Check service health")) {};
|
|
7
|
+
|
|
8
|
+
//#endregion
|
|
9
|
+
export { HealthGroup };
|
|
10
|
+
//# sourceMappingURL=health.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"health.js","names":[],"sources":["../../src/routes/health.ts"],"sourcesContent":["import { Schema } from \"effect\";\nimport { HttpApiEndpoint, HttpApiGroup, OpenApi } from \"effect/unstable/httpapi\";\n\nconst HealthResponse = Schema.Struct({\n status: Schema.Boolean,\n}).annotate({ identifier: \"HealthResponse\" });\n\nexport class HealthGroup extends HttpApiGroup.make(\"health\").add(\n HttpApiEndpoint.get(\"health\", \"/health\", {\n success: HealthResponse,\n }).annotate(OpenApi.Summary, \"Check service health\"),\n) {}\n"],"mappings":";;;;AAGA,MAAM,iBAAiB,OAAO,OAAO,EACnC,QAAQ,OAAO,QACjB,CAAC,CAAC,CAAC,SAAS,EAAE,YAAY,iBAAiB,CAAC;AAE5C,IAAa,cAAb,cAAiC,aAAa,KAAK,QAAQ,CAAC,CAAC,IAC3D,gBAAgB,IAAI,UAAU,WAAW,EACvC,SAAS,eACX,CAAC,CAAC,CAAC,SAAS,QAAQ,SAAS,sBAAsB,CACrD,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { HealthGroup } from "./health.js";
|
|
2
|
+
import { AddressMetadataGroup } from "./address-metadata.js";
|
|
3
|
+
import { ExecutionGroup } from "./execution.js";
|
|
4
|
+
import { EnsGroup } from "./ens.js";
|
|
5
|
+
import { ApiKeyGroup } from "./api-key.js";
|
|
6
|
+
import { BillingGroup } from "./billing.js";
|
|
7
|
+
import { DashboardGroup } from "./dashboard.js";
|
|
8
|
+
import { PortfolioGroup } from "./portfolio.js";
|
|
9
|
+
import { WalletGroup } from "./wallet.js";
|
|
10
|
+
import { SessionKeyGroup } from "./session-key.js";
|
|
11
|
+
import { SignatureGroup } from "./signature.js";
|
|
12
|
+
import { MagicLinkGroup } from "./auth/core/magic-link.js";
|
|
13
|
+
import { SessionGroup } from "./auth/core/session.js";
|
|
14
|
+
import { UserGroup } from "./auth/core/user.js";
|
|
15
|
+
import { NotificationGroup } from "./auth/notification.js";
|
|
16
|
+
import { OAuthGroup } from "./auth/oauth.js";
|
|
17
|
+
import { InvitationGroup } from "./auth/organization/invitation.js";
|
|
18
|
+
import { MemberGroup } from "./auth/organization/members.js";
|
|
19
|
+
import { OrganizationGroup } from "./auth/organization/organization.js";
|
|
20
|
+
import "./auth/index.js";
|
|
21
|
+
import { BetaInviteGroup } from "./beta-invite.js";
|
|
22
|
+
import { AdminWaitlistGroup, WaitlistGroup } from "./waitlist.js";
|
|
23
|
+
export { AddressMetadataGroup, AdminWaitlistGroup, ApiKeyGroup, BetaInviteGroup, BillingGroup, DashboardGroup, EnsGroup, ExecutionGroup, HealthGroup, InvitationGroup, MagicLinkGroup, MemberGroup, NotificationGroup, OAuthGroup, OrganizationGroup, PortfolioGroup, SessionGroup, SessionKeyGroup, SignatureGroup, UserGroup, WaitlistGroup, WalletGroup };
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { Authorization } from "../middlewares/auth.js";
|
|
2
|
+
import "../middlewares/index.js";
|
|
3
|
+
import { HttpApiEndpoint, HttpApiGroup } from "effect/unstable/httpapi";
|
|
4
|
+
import { PortfolioUnavailableError } from "@namera-ai/protocol";
|
|
5
|
+
//#region src/routes/portfolio.d.ts
|
|
6
|
+
declare const PortfolioGroup_base: HttpApiGroup.HttpApiGroup<"portfolio", HttpApiEndpoint.HttpApiEndpoint<"query", "POST", "/portfolios/assets/query", never, never, import("effect/Schema").toCodecJson<import("effect/Schema").Struct<{
|
|
7
|
+
readonly namespace: import("effect/Schema").Literal<"eip155">;
|
|
8
|
+
readonly address: import("effect/Schema").brand<import("effect/Schema").TemplateLiteral<readonly ["0x", import("effect/Schema").String]>, "EthereumAddress">;
|
|
9
|
+
readonly chainIds: import("effect/Schema").optionalKey<import("effect/Schema").$Array<import("effect/Schema").Literals<readonly ["eip155:1", "eip155:10", "eip155:8453", "eip155:42161", "eip155:84532", "eip155:421614", "eip155:11155111", "eip155:11155420"]>>>;
|
|
10
|
+
readonly cursor: import("effect/Schema").optionalKey<import("effect/Schema").String>;
|
|
11
|
+
readonly pageSize: import("effect/Schema").optionalKey<import("effect/Schema").Int>;
|
|
12
|
+
}>>, never, import("effect/Schema").toCodecJson<import("effect/Schema").Struct<{
|
|
13
|
+
readonly namespace: import("effect/Schema").Literal<"eip155">;
|
|
14
|
+
readonly address: import("effect/Schema").brand<import("effect/Schema").TemplateLiteral<readonly ["0x", import("effect/Schema").String]>, "EthereumAddress">;
|
|
15
|
+
readonly summary: import("effect/Schema").Struct<{
|
|
16
|
+
readonly assetCount: import("effect/Schema").Int;
|
|
17
|
+
readonly pricedAssetCount: import("effect/Schema").Int;
|
|
18
|
+
readonly unpricedAssetCount: import("effect/Schema").Int;
|
|
19
|
+
readonly totalValueUsd: import("effect/Schema").String;
|
|
20
|
+
}>;
|
|
21
|
+
readonly chains: import("effect/Schema").$Array<import("effect/Schema").Struct<{
|
|
22
|
+
readonly chainId: import("effect/Schema").Literals<readonly ["eip155:1", "eip155:10", "eip155:8453", "eip155:42161", "eip155:84532", "eip155:421614", "eip155:11155111", "eip155:11155420"]>;
|
|
23
|
+
readonly assetCount: import("effect/Schema").Int;
|
|
24
|
+
readonly pricedAssetCount: import("effect/Schema").Int;
|
|
25
|
+
readonly totalValueUsd: import("effect/Schema").String;
|
|
26
|
+
}>>;
|
|
27
|
+
readonly items: import("effect/Schema").$Array<import("effect/Schema").Union<readonly [import("effect/Schema").Struct<{
|
|
28
|
+
readonly namespace: import("effect/Schema").Literal<"eip155">;
|
|
29
|
+
readonly chainId: import("effect/Schema").Literals<readonly ["eip155:1", "eip155:10", "eip155:8453", "eip155:42161", "eip155:84532", "eip155:421614", "eip155:11155111", "eip155:11155420"]>;
|
|
30
|
+
readonly type: import("effect/Schema").Literals<readonly ["native", "erc20"]>;
|
|
31
|
+
readonly tokenAddress: import("effect/Schema").NullOr<import("effect/Schema").brand<import("effect/Schema").TemplateLiteral<readonly ["0x", import("effect/Schema").String]>, "EthereumAddress">>;
|
|
32
|
+
readonly rawBalance: import("effect/Schema").TemplateLiteral<readonly ["0x", import("effect/Schema").String]>;
|
|
33
|
+
readonly formattedBalance: import("effect/Schema").NullOr<import("effect/Schema").String>;
|
|
34
|
+
readonly metadata: import("effect/Schema").Struct<{
|
|
35
|
+
readonly name: import("effect/Schema").NullOr<import("effect/Schema").String>;
|
|
36
|
+
readonly symbol: import("effect/Schema").NullOr<import("effect/Schema").String>;
|
|
37
|
+
readonly decimals: import("effect/Schema").NullOr<import("effect/Schema").Int>;
|
|
38
|
+
readonly logoUrl: import("effect/Schema").NullOr<import("effect/Schema").String>;
|
|
39
|
+
}>;
|
|
40
|
+
readonly addressMetadata: import("effect/Schema").NullOr<import("effect/Schema").Struct<{
|
|
41
|
+
readonly schemaVersion: import("effect/Schema").Literal<1>;
|
|
42
|
+
readonly namespace: import("effect/Schema").Literal<"eip155">;
|
|
43
|
+
readonly chainId: import("effect/Schema").Literals<readonly ["eip155:1", "eip155:10", "eip155:8453", "eip155:42161", "eip155:84532", "eip155:421614", "eip155:11155111", "eip155:11155420"]>;
|
|
44
|
+
readonly address: import("effect/Schema").brand<import("effect/Schema").TemplateLiteral<readonly ["0x", import("effect/Schema").String]>, "EthereumAddress">;
|
|
45
|
+
readonly kind: import("effect/Schema").Literals<readonly ["eoa", "contract", "fungible-token", "nft-contract", "unknown"]>;
|
|
46
|
+
readonly identity: import("effect/Schema").Struct<{
|
|
47
|
+
readonly displayName: import("effect/Schema").NullOr<import("effect/Schema").String>;
|
|
48
|
+
readonly description: import("effect/Schema").NullOr<import("effect/Schema").String>;
|
|
49
|
+
readonly iconUrl: import("effect/Schema").NullOr<import("effect/Schema").String>;
|
|
50
|
+
}>;
|
|
51
|
+
readonly trust: import("effect/Schema").Struct<{
|
|
52
|
+
readonly reputation: import("effect/Schema").Literals<readonly ["credible", "neutral", "suspicious", "scam", "unknown"]>;
|
|
53
|
+
readonly isScam: import("effect/Schema").Boolean;
|
|
54
|
+
readonly isSourceVerified: import("effect/Schema").NullOr<import("effect/Schema").Boolean>;
|
|
55
|
+
readonly signals: import("effect/Schema").$Array<import("effect/Schema").Literals<readonly ["blockscout", "metadata-tag", "token-market"]>>;
|
|
56
|
+
}>;
|
|
57
|
+
readonly tags: import("effect/Schema").$Array<import("effect/Schema").Struct<{
|
|
58
|
+
readonly type: import("effect/Schema").Literals<readonly ["name", "category", "protocol", "information", "classifier", "note"]>;
|
|
59
|
+
readonly slug: import("effect/Schema").String;
|
|
60
|
+
readonly name: import("effect/Schema").String;
|
|
61
|
+
}>>;
|
|
62
|
+
readonly token: import("effect/Schema").NullOr<import("effect/Schema").Struct<{
|
|
63
|
+
readonly standard: import("effect/Schema").Literals<readonly ["erc20", "erc721", "erc1155", "other"]>;
|
|
64
|
+
readonly name: import("effect/Schema").NullOr<import("effect/Schema").String>;
|
|
65
|
+
readonly symbol: import("effect/Schema").NullOr<import("effect/Schema").String>;
|
|
66
|
+
readonly decimals: import("effect/Schema").NullOr<import("effect/Schema").Int>;
|
|
67
|
+
readonly logoUrl: import("effect/Schema").NullOr<import("effect/Schema").String>;
|
|
68
|
+
}>>;
|
|
69
|
+
readonly contract: import("effect/Schema").NullOr<import("effect/Schema").Struct<{
|
|
70
|
+
readonly name: import("effect/Schema").NullOr<import("effect/Schema").String>;
|
|
71
|
+
readonly proxyType: import("effect/Schema").NullOr<import("effect/Schema").String>;
|
|
72
|
+
readonly implementationAddress: import("effect/Schema").NullOr<import("effect/Schema").brand<import("effect/Schema").TemplateLiteral<readonly ["0x", import("effect/Schema").String]>, "EthereumAddress">>;
|
|
73
|
+
readonly implementationName: import("effect/Schema").NullOr<import("effect/Schema").String>;
|
|
74
|
+
}>>;
|
|
75
|
+
readonly provenance: import("effect/Schema").Struct<{
|
|
76
|
+
readonly provider: import("effect/Schema").Literal<"blockscout">;
|
|
77
|
+
readonly observedAt: import("effect/Schema").DateTimeUtcFromString;
|
|
78
|
+
}>;
|
|
79
|
+
}>>;
|
|
80
|
+
readonly usdPrice: import("effect/Schema").NullOr<import("effect/Schema").Struct<{
|
|
81
|
+
readonly value: import("effect/Schema").String;
|
|
82
|
+
readonly updatedAt: import("effect/Schema").DateTimeUtcFromString;
|
|
83
|
+
}>>;
|
|
84
|
+
}>]>>;
|
|
85
|
+
readonly nextCursor: import("effect/Schema").NullOr<import("effect/Schema").String>;
|
|
86
|
+
readonly partialFailures: import("effect/Schema").$Array<import("effect/Schema").Struct<{
|
|
87
|
+
readonly chainId: import("effect/Schema").Literals<readonly ["eip155:1", "eip155:10", "eip155:8453", "eip155:42161", "eip155:84532", "eip155:421614", "eip155:11155111", "eip155:11155420"]>;
|
|
88
|
+
readonly code: import("effect/Schema").Literal<"PROVIDER_UNAVAILABLE">;
|
|
89
|
+
}>>;
|
|
90
|
+
}>>, import("effect/Schema").toCodecJson<import("effect/unstable/httpapi/HttpApiSchema").asNoContent<typeof import("effect/unstable/httpapi/HttpApiError").Forbidden> | import("effect/unstable/httpapi/HttpApiSchema").asNoContent<typeof import("effect/unstable/httpapi/HttpApiError").InternalServerError> | typeof import("@namera-ai/protocol").RateLimitExceeded | typeof PortfolioUnavailableError>, Authorization, never>, false>;
|
|
91
|
+
declare class PortfolioGroup extends PortfolioGroup_base {}
|
|
92
|
+
//#endregion
|
|
93
|
+
export { PortfolioGroup };
|
|
94
|
+
//# sourceMappingURL=portfolio.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"portfolio.d.ts","names":[],"sources":["../../src/routes/portfolio.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAQa,uBAAuB"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { CommonErrors } from "../common.js";
|
|
2
|
+
import { Authorization } from "../middlewares/auth.js";
|
|
3
|
+
import { HttpApiEndpoint, HttpApiGroup, OpenApi } from "effect/unstable/httpapi";
|
|
4
|
+
import { PortfolioUnavailableError } from "@namera-ai/protocol";
|
|
5
|
+
import { PortfolioResponse, QueryPortfolioRequest } from "@namera-ai/protocol/dto";
|
|
6
|
+
|
|
7
|
+
//#region src/routes/portfolio.ts
|
|
8
|
+
var PortfolioGroup = class extends HttpApiGroup.make("portfolio").add(HttpApiEndpoint.post("query", "/assets/query", {
|
|
9
|
+
payload: QueryPortfolioRequest,
|
|
10
|
+
success: PortfolioResponse,
|
|
11
|
+
error: [PortfolioUnavailableError, ...CommonErrors]
|
|
12
|
+
}).annotate(OpenApi.Summary, "Query a paginated cross-chain fungible portfolio")).annotate(OpenApi.Description, "Namespace-neutral portfolio data").middleware(Authorization).prefix("/portfolios") {};
|
|
13
|
+
|
|
14
|
+
//#endregion
|
|
15
|
+
export { PortfolioGroup };
|
|
16
|
+
//# sourceMappingURL=portfolio.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"portfolio.js","names":[],"sources":["../../src/routes/portfolio.ts"],"sourcesContent":["import { HttpApiEndpoint, HttpApiGroup, OpenApi } from \"effect/unstable/httpapi\";\n\nimport { PortfolioUnavailableError } from \"@namera-ai/protocol\";\nimport { PortfolioResponse, QueryPortfolioRequest } from \"@namera-ai/protocol/dto\";\n\nimport { CommonErrors } from \"#/common\";\nimport { Authorization } from \"#/middlewares/index\";\n\nexport class PortfolioGroup extends HttpApiGroup.make(\"portfolio\")\n .add(\n HttpApiEndpoint.post(\"query\", \"/assets/query\", {\n payload: QueryPortfolioRequest,\n success: PortfolioResponse,\n error: [PortfolioUnavailableError, ...CommonErrors],\n }).annotate(OpenApi.Summary, \"Query a paginated cross-chain fungible portfolio\"),\n )\n .annotate(OpenApi.Description, \"Namespace-neutral portfolio data\")\n .middleware(Authorization)\n .prefix(\"/portfolios\") {}\n"],"mappings":";;;;;;;AAQA,IAAa,iBAAb,cAAoC,aAAa,KAAK,WAAW,CAAC,CAC/D,IACC,gBAAgB,KAAK,SAAS,iBAAiB;CAC7C,SAAS;CACT,SAAS;CACT,OAAO,CAAC,2BAA2B,GAAG,YAAY;AACpD,CAAC,CAAC,CAAC,SAAS,QAAQ,SAAS,kDAAkD,CACjF,CAAC,CACA,SAAS,QAAQ,aAAa,kCAAkC,CAAC,CACjE,WAAW,aAAa,CAAC,CACzB,OAAO,aAAa,CAAC,CAAC,CAAC"}
|