@andrewkimjoseph/celina-sdk 0.2.12 → 0.4.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 +27 -0
- package/build/abis/gooddollar-identity.d.ts +12 -0
- package/build/abis/gooddollar-identity.js +7 -0
- package/build/abis/gooddollar-identity.js.map +1 -1
- package/build/abis/self-registry.d.ts +194 -0
- package/build/abis/self-registry.js +120 -0
- package/build/abis/self-registry.js.map +1 -0
- package/build/abis/ubi-scheme.d.ts +79 -0
- package/build/abis/ubi-scheme.js +59 -0
- package/build/abis/ubi-scheme.js.map +1 -0
- package/build/analytics/amplitude.d.ts +5 -0
- package/build/analytics/amplitude.js +56 -0
- package/build/analytics/amplitude.js.map +1 -0
- package/build/analytics/config.d.ts +7 -0
- package/build/analytics/config.js +30 -0
- package/build/analytics/config.js.map +1 -0
- package/build/analytics/mcp-tool-events.d.ts +5 -0
- package/build/analytics/mcp-tool-events.js +56 -0
- package/build/analytics/mcp-tool-events.js.map +1 -0
- package/build/analytics/wrap-service.d.ts +5 -0
- package/build/analytics/wrap-service.js +36 -0
- package/build/analytics/wrap-service.js.map +1 -0
- package/build/clients/carbon-rest.d.ts +17 -0
- package/build/clients/carbon-rest.js +59 -0
- package/build/clients/carbon-rest.js.map +1 -0
- package/build/clients/carbon-sdk.d.ts +31 -0
- package/build/clients/carbon-sdk.js +48 -0
- package/build/clients/carbon-sdk.js.map +1 -0
- package/build/clients/self-api.d.ts +82 -0
- package/build/clients/self-api.js +242 -0
- package/build/clients/self-api.js.map +1 -0
- package/build/config/carbon.d.ts +12 -0
- package/build/config/carbon.js +13 -0
- package/build/config/carbon.js.map +1 -0
- package/build/config/gooddollar.d.ts +2 -0
- package/build/config/gooddollar.js +2 -0
- package/build/config/gooddollar.js.map +1 -1
- package/build/config/sdk-config.d.ts +14 -0
- package/build/config/sdk-config.js +16 -0
- package/build/config/sdk-config.js.map +1 -1
- package/build/config/self.d.ts +22 -0
- package/build/config/self.js +27 -0
- package/build/config/self.js.map +1 -0
- package/build/index.d.ts +18 -1
- package/build/index.js +28 -13
- package/build/index.js.map +1 -1
- package/build/services/carbon.service.d.ts +68 -0
- package/build/services/carbon.service.js +189 -0
- package/build/services/carbon.service.js.map +1 -0
- package/build/services/gooddollar.service.d.ts +41 -3
- package/build/services/gooddollar.service.js +164 -1
- package/build/services/gooddollar.service.js.map +1 -1
- package/build/services/self-session-store.d.ts +19 -0
- package/build/services/self-session-store.js +28 -0
- package/build/services/self-session-store.js.map +1 -0
- package/build/services/self.service.d.ts +241 -0
- package/build/services/self.service.js +692 -0
- package/build/services/self.service.js.map +1 -0
- package/build/types/carbon.d.ts +31 -0
- package/build/types/carbon.js +2 -0
- package/build/types/carbon.js.map +1 -0
- package/build/utils/carbon-prepared-flow.d.ts +11 -0
- package/build/utils/carbon-prepared-flow.js +25 -0
- package/build/utils/carbon-prepared-flow.js.map +1 -0
- package/build/utils/carbon-rest-adapter.d.ts +8 -0
- package/build/utils/carbon-rest-adapter.js +72 -0
- package/build/utils/carbon-rest-adapter.js.map +1 -0
- package/build/utils/self-format.d.ts +28 -0
- package/build/utils/self-format.js +79 -0
- package/build/utils/self-format.js.map +1 -0
- package/build/utils/self-signing.d.ts +4 -0
- package/build/utils/self-signing.js +38 -0
- package/build/utils/self-signing.js.map +1 -0
- package/package.json +7 -2
- package/tests/catalog/domains/carbon.ts +409 -0
- package/tests/catalog/domains/defi.ts +43 -0
- package/tests/catalog/domains/self.ts +63 -4
- package/tests/catalog/operations.ts +2 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"carbon.js","sourceRoot":"","sources":["../../src/config/carbon.ts"],"names":[],"mappings":"AAAA,yEAAyE;AAEzE,MAAM,CAAC,MAAM,YAAY,GAAG,MAAe,CAAC;AAE5C,MAAM,CAAC,MAAM,4BAA4B,GAAG,4BAA4B,CAAC;AAEzE,4FAA4F;AAC5F,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,uBAAuB,EAAE,4CAA4C;IACrE,cAAc,EAAE,4CAA4C;IAC5D,kCAAkC;IAClC,gBAAgB,EAAE,4CAA4C;IAC9D,oBAAoB,EAAE,4CAA4C;CAC1D,CAAC;AAEX,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,CAAC"}
|
|
@@ -1,2 +1,4 @@
|
|
|
1
1
|
/** GoodDollar IdentityV4 contract on Celo mainnet. */
|
|
2
2
|
export declare const GOODDOLLAR_IDENTITY_ADDRESS: "0xC361A6E67822a0EDc17D899227dd9FC50BD62F42";
|
|
3
|
+
/** GoodDollar UBISchemeV2 contract on Celo mainnet. */
|
|
4
|
+
export declare const GOODDOLLAR_UBI_SCHEME_ADDRESS: "0x43d72Ff17701B2DA814620735C39C620Ce0ea4A1";
|
|
@@ -1,3 +1,5 @@
|
|
|
1
1
|
/** GoodDollar IdentityV4 contract on Celo mainnet. */
|
|
2
2
|
export const GOODDOLLAR_IDENTITY_ADDRESS = "0xC361A6E67822a0EDc17D899227dd9FC50BD62F42";
|
|
3
|
+
/** GoodDollar UBISchemeV2 contract on Celo mainnet. */
|
|
4
|
+
export const GOODDOLLAR_UBI_SCHEME_ADDRESS = "0x43d72Ff17701B2DA814620735C39C620Ce0ea4A1";
|
|
3
5
|
//# sourceMappingURL=gooddollar.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gooddollar.js","sourceRoot":"","sources":["../../src/config/gooddollar.ts"],"names":[],"mappings":"AAAA,sDAAsD;AACtD,MAAM,CAAC,MAAM,2BAA2B,GACtC,4CAAqD,CAAC"}
|
|
1
|
+
{"version":3,"file":"gooddollar.js","sourceRoot":"","sources":["../../src/config/gooddollar.ts"],"names":[],"mappings":"AAAA,sDAAsD;AACtD,MAAM,CAAC,MAAM,2BAA2B,GACtC,4CAAqD,CAAC;AAExD,uDAAuD;AACvD,MAAM,CAAC,MAAM,6BAA6B,GACxC,4CAAqD,CAAC"}
|
|
@@ -4,6 +4,20 @@ export interface SdkConfig {
|
|
|
4
4
|
rpcUrl: string;
|
|
5
5
|
/** Ethereum mainnet RPC for ENS resolution (optional). */
|
|
6
6
|
ethRpcUrl?: string;
|
|
7
|
+
/** Carbon DeFi REST API base URL (default https://mcp.carbondefi.xyz). */
|
|
8
|
+
carbonRestBaseUrl?: string;
|
|
9
|
+
/** Enable @bancor/carbon-sdk fallback when REST fails (default true). */
|
|
10
|
+
carbonSdkFallback?: boolean;
|
|
11
|
+
/** Self Agent ID signing key (Node only; also reads `SELF_AGENT_PRIVATE_KEY`). */
|
|
12
|
+
selfAgentPrivateKey?: `0x${string}`;
|
|
13
|
+
/** Self Agent ID REST API base (default https://app.ai.self.xyz). */
|
|
14
|
+
selfApiBase?: string;
|
|
15
|
+
/** Amplitude read telemetry (default on; opt out with `false` or `CELINA_ANALYTICS_DISABLED=1`). */
|
|
16
|
+
analyticsEnabled?: boolean;
|
|
17
|
+
/** Override bundled Amplitude project API key. */
|
|
18
|
+
amplitudeApiKey?: string;
|
|
19
|
+
/** Amplitude `device_id` (default `celina-sdk`). */
|
|
20
|
+
analyticsDeviceId?: string;
|
|
7
21
|
}
|
|
8
22
|
/** Default Celo RPC when `rpcUrl` is omitted. */
|
|
9
23
|
export declare const DEFAULT_RPC_URL = "https://forno.celo.org";
|
|
@@ -5,9 +5,25 @@ export const DEFAULT_RPC_URL = "https://forno.celo.org";
|
|
|
5
5
|
* @param opts - Optional RPC overrides from `createCelinaClient(opts)`
|
|
6
6
|
*/
|
|
7
7
|
export function resolveSdkConfig(opts) {
|
|
8
|
+
const selfAgentPrivateKey = opts?.selfAgentPrivateKey ??
|
|
9
|
+
(typeof process !== "undefined"
|
|
10
|
+
? process.env.SELF_AGENT_PRIVATE_KEY
|
|
11
|
+
: undefined);
|
|
8
12
|
return {
|
|
9
13
|
rpcUrl: opts?.rpcUrl ?? DEFAULT_RPC_URL,
|
|
10
14
|
ethRpcUrl: opts?.ethRpcUrl,
|
|
15
|
+
carbonRestBaseUrl: opts?.carbonRestBaseUrl ??
|
|
16
|
+
process.env.CARBON_API_BASE_URL ??
|
|
17
|
+
"https://mcp.carbondefi.xyz",
|
|
18
|
+
carbonSdkFallback: opts?.carbonSdkFallback ?? true,
|
|
19
|
+
selfAgentPrivateKey,
|
|
20
|
+
selfApiBase: opts?.selfApiBase ??
|
|
21
|
+
(typeof process !== "undefined"
|
|
22
|
+
? process.env.SELF_AGENT_API_BASE
|
|
23
|
+
: undefined),
|
|
24
|
+
analyticsEnabled: opts?.analyticsEnabled,
|
|
25
|
+
amplitudeApiKey: opts?.amplitudeApiKey,
|
|
26
|
+
analyticsDeviceId: opts?.analyticsDeviceId,
|
|
11
27
|
};
|
|
12
28
|
}
|
|
13
29
|
//# sourceMappingURL=sdk-config.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sdk-config.js","sourceRoot":"","sources":["../../src/config/sdk-config.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"sdk-config.js","sourceRoot":"","sources":["../../src/config/sdk-config.ts"],"names":[],"mappings":"AAsBA,iDAAiD;AACjD,MAAM,CAAC,MAAM,eAAe,GAAG,wBAAwB,CAAC;AAExD;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAyB;IACxD,MAAM,mBAAmB,GACvB,IAAI,EAAE,mBAAmB;QACzB,CAAC,OAAO,OAAO,KAAK,WAAW;YAC7B,CAAC,CAAE,OAAO,CAAC,GAAG,CAAC,sBAAoD;YACnE,CAAC,CAAC,SAAS,CAAC,CAAC;IAEjB,OAAO;QACL,MAAM,EAAE,IAAI,EAAE,MAAM,IAAI,eAAe;QACvC,SAAS,EAAE,IAAI,EAAE,SAAS;QAC1B,iBAAiB,EACf,IAAI,EAAE,iBAAiB;YACvB,OAAO,CAAC,GAAG,CAAC,mBAAmB;YAC/B,4BAA4B;QAC9B,iBAAiB,EAAE,IAAI,EAAE,iBAAiB,IAAI,IAAI;QAClD,mBAAmB;QACnB,WAAW,EACT,IAAI,EAAE,WAAW;YACjB,CAAC,OAAO,OAAO,KAAK,WAAW;gBAC7B,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB;gBACjC,CAAC,CAAC,SAAS,CAAC;QAChB,gBAAgB,EAAE,IAAI,EAAE,gBAAgB;QACxC,eAAe,EAAE,IAAI,EAAE,eAAe;QACtC,iBAAiB,EAAE,IAAI,EAAE,iBAAiB;KAC3C,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export declare const SELF_REGISTRY_ADDRESS: "0xaC3DF9ABf80d0F5c020C06B04Cced27763355944";
|
|
2
|
+
export declare const SELF_API_BASE = "https://app.ai.self.xyz";
|
|
3
|
+
/** Network value for Self lifecycle REST APIs (register, refresh, deregister). */
|
|
4
|
+
export declare const SELF_API_NETWORK = "mainnet";
|
|
5
|
+
/** Query param for Self demo/gated HTTP endpoints on Celo mainnet. */
|
|
6
|
+
export declare const SELF_DEMO_NETWORK = "celo-mainnet";
|
|
7
|
+
export declare const SELF_CHAIN_ID = 42220;
|
|
8
|
+
export declare function selfDemoUrl(path: string, network?: string): string;
|
|
9
|
+
export declare const SELF_SESSION_TTL_MS: number;
|
|
10
|
+
export declare const SELF_MAX_SESSIONS = 50;
|
|
11
|
+
export declare const SELF_DEFAULT_MAX_AGE_MS: number;
|
|
12
|
+
export declare const SELF_FETCH_MAX_BYTES: number;
|
|
13
|
+
/** Warning threshold for upcoming proof expiry (matches Self SDK isProofExpiringSoon). */
|
|
14
|
+
export declare const SELF_PROOF_EXPIRING_SOON_DAYS = 30;
|
|
15
|
+
export declare const SELF_HEADERS: {
|
|
16
|
+
readonly ADDRESS: "x-self-agent-address";
|
|
17
|
+
readonly SIGNATURE: "x-self-agent-signature";
|
|
18
|
+
readonly TIMESTAMP: "x-self-agent-timestamp";
|
|
19
|
+
readonly KEYTYPE: "x-self-agent-keytype";
|
|
20
|
+
readonly KEY: "x-self-agent-key";
|
|
21
|
+
};
|
|
22
|
+
export type SelfRegistrationMode = "linked" | "wallet-free" | "smartwallet" | "self-custody" | "ed25519" | "ed25519-linked";
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export const SELF_REGISTRY_ADDRESS = "0xaC3DF9ABf80d0F5c020C06B04Cced27763355944";
|
|
2
|
+
export const SELF_API_BASE = "https://app.ai.self.xyz";
|
|
3
|
+
/** Network value for Self lifecycle REST APIs (register, refresh, deregister). */
|
|
4
|
+
export const SELF_API_NETWORK = "mainnet";
|
|
5
|
+
/** Query param for Self demo/gated HTTP endpoints on Celo mainnet. */
|
|
6
|
+
export const SELF_DEMO_NETWORK = "celo-mainnet";
|
|
7
|
+
export const SELF_CHAIN_ID = 42220;
|
|
8
|
+
export function selfDemoUrl(path, network = SELF_DEMO_NETWORK) {
|
|
9
|
+
const base = SELF_API_BASE.replace(/\/+$/, "");
|
|
10
|
+
const normalizedPath = path.startsWith("/") ? path : `/${path}`;
|
|
11
|
+
const separator = normalizedPath.includes("?") ? "&" : "?";
|
|
12
|
+
return `${base}${normalizedPath}${separator}network=${network}`;
|
|
13
|
+
}
|
|
14
|
+
export const SELF_SESSION_TTL_MS = 10 * 60 * 1000;
|
|
15
|
+
export const SELF_MAX_SESSIONS = 50;
|
|
16
|
+
export const SELF_DEFAULT_MAX_AGE_MS = 5 * 60 * 1000;
|
|
17
|
+
export const SELF_FETCH_MAX_BYTES = 10 * 1024;
|
|
18
|
+
/** Warning threshold for upcoming proof expiry (matches Self SDK isProofExpiringSoon). */
|
|
19
|
+
export const SELF_PROOF_EXPIRING_SOON_DAYS = 30;
|
|
20
|
+
export const SELF_HEADERS = {
|
|
21
|
+
ADDRESS: "x-self-agent-address",
|
|
22
|
+
SIGNATURE: "x-self-agent-signature",
|
|
23
|
+
TIMESTAMP: "x-self-agent-timestamp",
|
|
24
|
+
KEYTYPE: "x-self-agent-keytype",
|
|
25
|
+
KEY: "x-self-agent-key",
|
|
26
|
+
};
|
|
27
|
+
//# sourceMappingURL=self.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"self.js","sourceRoot":"","sources":["../../src/config/self.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,qBAAqB,GAChC,4CAAqD,CAAC;AAExD,MAAM,CAAC,MAAM,aAAa,GAAG,yBAAyB,CAAC;AAEvD,kFAAkF;AAClF,MAAM,CAAC,MAAM,gBAAgB,GAAG,SAAS,CAAC;AAE1C,sEAAsE;AACtE,MAAM,CAAC,MAAM,iBAAiB,GAAG,cAAc,CAAC;AAEhD,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,CAAC;AAEnC,MAAM,UAAU,WAAW,CAAC,IAAY,EAAE,OAAO,GAAG,iBAAiB;IACnE,MAAM,IAAI,GAAG,aAAa,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAC/C,MAAM,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;IAChE,MAAM,SAAS,GAAG,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;IAC3D,OAAO,GAAG,IAAI,GAAG,cAAc,GAAG,SAAS,WAAW,OAAO,EAAE,CAAC;AAClE,CAAC;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAElD,MAAM,CAAC,MAAM,iBAAiB,GAAG,EAAE,CAAC;AAEpC,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;AAErD,MAAM,CAAC,MAAM,oBAAoB,GAAG,EAAE,GAAG,IAAI,CAAC;AAE9C,0FAA0F;AAC1F,MAAM,CAAC,MAAM,6BAA6B,GAAG,EAAE,CAAC;AAEhD,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,OAAO,EAAE,sBAAsB;IAC/B,SAAS,EAAE,wBAAwB;IACnC,SAAS,EAAE,wBAAwB;IACnC,OAAO,EAAE,sBAAsB;IAC/B,GAAG,EAAE,kBAAkB;CACf,CAAC"}
|
package/build/index.d.ts
CHANGED
|
@@ -12,6 +12,8 @@ import { NftService } from "./services/nft.service.js";
|
|
|
12
12
|
import { StakingService } from "./services/staking.service.js";
|
|
13
13
|
import { TokenService } from "./services/token.service.js";
|
|
14
14
|
import { TransactionService } from "./services/transaction.service.js";
|
|
15
|
+
import { CarbonService } from "./services/carbon.service.js";
|
|
16
|
+
import { SelfService } from "./services/self.service.js";
|
|
15
17
|
/** Optional RPC overrides when creating a Celina client. */
|
|
16
18
|
export type CelinaClientOptions = Partial<SdkConfig>;
|
|
17
19
|
/** Domain services for Celo mainnet reads and unsigned transaction preparation. */
|
|
@@ -30,7 +32,7 @@ export interface CelinaClient {
|
|
|
30
32
|
uniswap: UniswapService;
|
|
31
33
|
/** Aave V3 `prepareSupply` and `prepareWithdraw` flows on Celo. */
|
|
32
34
|
aave: AaveService;
|
|
33
|
-
/** GoodDollar IdentityV4 whitelist status. */
|
|
35
|
+
/** GoodDollar IdentityV4 whitelist status and daily UBI claim preparation. */
|
|
34
36
|
gooddollar: GoodDollarService;
|
|
35
37
|
/** Celo and Ethereum ENS resolution. */
|
|
36
38
|
ens: EnsService;
|
|
@@ -42,6 +44,10 @@ export interface CelinaClient {
|
|
|
42
44
|
nft: NftService;
|
|
43
45
|
/** Generic read-only contract calls and gas estimates. */
|
|
44
46
|
contract: ContractService;
|
|
47
|
+
/** Carbon DeFi maker strategies and taker trades on Celo (SDK + REST). */
|
|
48
|
+
carbon: CarbonService;
|
|
49
|
+
/** Self Agent ID on Celo mainnet (ai.self.xyz + on-chain registry). */
|
|
50
|
+
self: SelfService;
|
|
45
51
|
}
|
|
46
52
|
/**
|
|
47
53
|
* Create a Celina client for Celo mainnet reads and unsigned tx preparation.
|
|
@@ -73,3 +79,14 @@ export type { ContractCallParams } from "./services/contract.service.js";
|
|
|
73
79
|
/** Aave V3 Celo pool address and supported asset symbols. */
|
|
74
80
|
export { AAVE_POOL, AAVE_SUPPORTED_SYMBOLS, resolveAaveAsset, } from "./config/aave.js";
|
|
75
81
|
export type { AaveAsset } from "./config/aave.js";
|
|
82
|
+
export { GOODDOLLAR_IDENTITY_ADDRESS, GOODDOLLAR_UBI_SCHEME_ADDRESS, } from "./config/gooddollar.js";
|
|
83
|
+
export type { CarbonPrepareResult, CarbonRestSuccess, } from "./types/carbon.js";
|
|
84
|
+
export type { CarbonWriteBody } from "./services/carbon.service.js";
|
|
85
|
+
export { CARBON_CHAIN, CELO_CARBON_CONTRACTS, DEFAULT_CARBON_REST_BASE_URL, } from "./config/carbon.js";
|
|
86
|
+
export { CarbonRestError } from "./clients/carbon-rest.js";
|
|
87
|
+
export { SelfService, type VerifySelfAgentParams, type VerifySelfRequestParams, type RegisterSelfAgentParams, } from "./services/self.service.js";
|
|
88
|
+
export { SelfApiError, SelfExpiredSessionError, } from "./clients/self-api.js";
|
|
89
|
+
export type { SelfRegistrationMode } from "./config/self.js";
|
|
90
|
+
export { selfDemoUrl, SELF_DEMO_NETWORK, SELF_HEADERS, } from "./config/self.js";
|
|
91
|
+
export { resolveSelfSessionLinks, formatSelfSessionLinksDisplay, type SelfSessionLinks, } from "./utils/self-format.js";
|
|
92
|
+
export { clearSelfSessionsForTests } from "./services/self-session-store.js";
|
package/build/index.js
CHANGED
|
@@ -20,6 +20,9 @@ import { NftService } from "./services/nft.service.js";
|
|
|
20
20
|
import { StakingService } from "./services/staking.service.js";
|
|
21
21
|
import { TokenService } from "./services/token.service.js";
|
|
22
22
|
import { TransactionService } from "./services/transaction.service.js";
|
|
23
|
+
import { CarbonService } from "./services/carbon.service.js";
|
|
24
|
+
import { SelfService } from "./services/self.service.js";
|
|
25
|
+
import { wrapServiceForAnalytics } from "./analytics/wrap-service.js";
|
|
23
26
|
/**
|
|
24
27
|
* Create a Celina client for Celo mainnet reads and unsigned tx preparation.
|
|
25
28
|
* No private keys — pass prepared `steps` to wagmi/viem for wallet signing.
|
|
@@ -28,23 +31,35 @@ export function createCelinaClient(opts) {
|
|
|
28
31
|
const config = resolveSdkConfig(opts);
|
|
29
32
|
const clientFactory = new CeloClientFactory(config);
|
|
30
33
|
const ensClientFactory = new EnsClientFactory(config);
|
|
34
|
+
const tokenService = new TokenService(clientFactory);
|
|
35
|
+
const wrap = (key, service) => wrapServiceForAnalytics(key, service, config);
|
|
31
36
|
return {
|
|
32
|
-
blockchain: new BlockchainService(clientFactory),
|
|
33
|
-
account: new AccountService(clientFactory),
|
|
34
|
-
token:
|
|
35
|
-
transaction: new TransactionService(clientFactory),
|
|
36
|
-
mentoFx: new MentoFxService(clientFactory),
|
|
37
|
-
uniswap: new UniswapService(clientFactory),
|
|
38
|
-
aave: new AaveService(clientFactory),
|
|
39
|
-
gooddollar: new GoodDollarService(clientFactory),
|
|
40
|
-
ens: new EnsService(ensClientFactory),
|
|
41
|
-
governance: new GovernanceService(clientFactory),
|
|
42
|
-
staking: new StakingService(clientFactory),
|
|
43
|
-
nft: new NftService(clientFactory),
|
|
44
|
-
contract: new ContractService(clientFactory),
|
|
37
|
+
blockchain: wrap("blockchain", new BlockchainService(clientFactory)),
|
|
38
|
+
account: wrap("account", new AccountService(clientFactory)),
|
|
39
|
+
token: wrap("token", tokenService),
|
|
40
|
+
transaction: wrap("transaction", new TransactionService(clientFactory)),
|
|
41
|
+
mentoFx: wrap("mentoFx", new MentoFxService(clientFactory)),
|
|
42
|
+
uniswap: wrap("uniswap", new UniswapService(clientFactory)),
|
|
43
|
+
aave: wrap("aave", new AaveService(clientFactory)),
|
|
44
|
+
gooddollar: wrap("gooddollar", new GoodDollarService(clientFactory)),
|
|
45
|
+
ens: wrap("ens", new EnsService(ensClientFactory)),
|
|
46
|
+
governance: wrap("governance", new GovernanceService(clientFactory)),
|
|
47
|
+
staking: wrap("staking", new StakingService(clientFactory)),
|
|
48
|
+
nft: wrap("nft", new NftService(clientFactory)),
|
|
49
|
+
contract: wrap("contract", new ContractService(clientFactory)),
|
|
50
|
+
carbon: wrap("carbon", new CarbonService(config, tokenService)),
|
|
51
|
+
self: wrap("self", new SelfService(clientFactory, config)),
|
|
45
52
|
};
|
|
46
53
|
}
|
|
47
54
|
export { serializePreparedFlow } from "./types/prepared.js";
|
|
48
55
|
/** Aave V3 Celo pool address and supported asset symbols. */
|
|
49
56
|
export { AAVE_POOL, AAVE_SUPPORTED_SYMBOLS, resolveAaveAsset, } from "./config/aave.js";
|
|
57
|
+
export { GOODDOLLAR_IDENTITY_ADDRESS, GOODDOLLAR_UBI_SCHEME_ADDRESS, } from "./config/gooddollar.js";
|
|
58
|
+
export { CARBON_CHAIN, CELO_CARBON_CONTRACTS, DEFAULT_CARBON_REST_BASE_URL, } from "./config/carbon.js";
|
|
59
|
+
export { CarbonRestError } from "./clients/carbon-rest.js";
|
|
60
|
+
export { SelfService, } from "./services/self.service.js";
|
|
61
|
+
export { SelfApiError, SelfExpiredSessionError, } from "./clients/self-api.js";
|
|
62
|
+
export { selfDemoUrl, SELF_DEMO_NETWORK, SELF_HEADERS, } from "./config/self.js";
|
|
63
|
+
export { resolveSelfSessionLinks, formatSelfSessionLinksDisplay, } from "./utils/self-format.js";
|
|
64
|
+
export { clearSelfSessionsForTests } from "./services/self-session-store.js";
|
|
50
65
|
//# sourceMappingURL=index.js.map
|
package/build/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAkB,MAAM,wBAAwB,CAAC;AAC1E,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Carbon DeFi on Celo — hybrid @bancor/carbon-sdk + Carbon REST (mcp.carbondefi.xyz).
|
|
3
|
+
* REST is primary for all 25 MCP tools; SDK is fallback for quotes/trades when REST fails.
|
|
4
|
+
*/
|
|
5
|
+
import type { SdkConfig } from "../config/sdk-config.js";
|
|
6
|
+
import type { CarbonPrepareResult, CarbonRestSuccess } from "../types/carbon.js";
|
|
7
|
+
import type { TokenService } from "./token.service.js";
|
|
8
|
+
export type CarbonWriteBody = Record<string, unknown> & {
|
|
9
|
+
wallet_address: `0x${string}`;
|
|
10
|
+
};
|
|
11
|
+
export declare class CarbonService {
|
|
12
|
+
private readonly tokenService;
|
|
13
|
+
private readonly rest;
|
|
14
|
+
private readonly sdk;
|
|
15
|
+
constructor(config: SdkConfig, tokenService: TokenService);
|
|
16
|
+
private restRead;
|
|
17
|
+
private restPrepare;
|
|
18
|
+
private withSdkFallback;
|
|
19
|
+
getStrategies(walletAddress: `0x${string}`): Promise<CarbonRestSuccess & {
|
|
20
|
+
warnings: string[];
|
|
21
|
+
}>;
|
|
22
|
+
getStrategy(strategyId: string): Promise<CarbonRestSuccess & {
|
|
23
|
+
warnings: string[];
|
|
24
|
+
}>;
|
|
25
|
+
prepareLimitOrder(body: CarbonWriteBody): Promise<CarbonPrepareResult>;
|
|
26
|
+
prepareRangeOrder(body: CarbonWriteBody): Promise<CarbonPrepareResult>;
|
|
27
|
+
prepareRecurringStrategy(body: CarbonWriteBody): Promise<CarbonPrepareResult>;
|
|
28
|
+
prepareConcentratedStrategy(body: CarbonWriteBody): Promise<CarbonPrepareResult>;
|
|
29
|
+
prepareFullRangeStrategy(body: CarbonWriteBody): Promise<CarbonPrepareResult>;
|
|
30
|
+
prepareRepriceStrategy(body: CarbonWriteBody): Promise<CarbonPrepareResult>;
|
|
31
|
+
prepareEditStrategy(body: CarbonWriteBody): Promise<CarbonPrepareResult>;
|
|
32
|
+
prepareDepositBudget(body: CarbonWriteBody): Promise<CarbonPrepareResult>;
|
|
33
|
+
prepareWithdrawBudget(body: CarbonWriteBody): Promise<CarbonPrepareResult>;
|
|
34
|
+
preparePauseStrategy(body: CarbonWriteBody): Promise<CarbonPrepareResult>;
|
|
35
|
+
prepareResumeStrategy(body: CarbonWriteBody): Promise<CarbonPrepareResult>;
|
|
36
|
+
prepareDeleteStrategy(body: CarbonWriteBody): Promise<CarbonPrepareResult>;
|
|
37
|
+
getTradeQuote(body: Record<string, unknown>): Promise<CarbonRestSuccess & {
|
|
38
|
+
warnings: string[];
|
|
39
|
+
}>;
|
|
40
|
+
prepareTrade(body: CarbonWriteBody): Promise<CarbonPrepareResult>;
|
|
41
|
+
explorePair(body: Record<string, unknown>): Promise<CarbonRestSuccess & {
|
|
42
|
+
warnings: string[];
|
|
43
|
+
}>;
|
|
44
|
+
resolveToken(symbolOrName: string): Promise<CarbonRestSuccess & {
|
|
45
|
+
warnings: string[];
|
|
46
|
+
}>;
|
|
47
|
+
getActivity(body: Record<string, unknown>): Promise<CarbonRestSuccess & {
|
|
48
|
+
warnings: string[];
|
|
49
|
+
}>;
|
|
50
|
+
findOpportunities(body: Record<string, unknown>): Promise<CarbonRestSuccess & {
|
|
51
|
+
warnings: string[];
|
|
52
|
+
}>;
|
|
53
|
+
getProtocolStats(body?: Record<string, unknown>): Promise<CarbonRestSuccess & {
|
|
54
|
+
warnings: string[];
|
|
55
|
+
}>;
|
|
56
|
+
getPriceHistory(body: Record<string, unknown>): Promise<CarbonRestSuccess & {
|
|
57
|
+
warnings: string[];
|
|
58
|
+
}>;
|
|
59
|
+
simulateStrategy(body: Record<string, unknown>): Promise<CarbonRestSuccess & {
|
|
60
|
+
warnings: string[];
|
|
61
|
+
}>;
|
|
62
|
+
help(topic?: string): Promise<CarbonRestSuccess & {
|
|
63
|
+
warnings: string[];
|
|
64
|
+
}>;
|
|
65
|
+
learn(topic?: string): Promise<CarbonRestSuccess & {
|
|
66
|
+
warnings: string[];
|
|
67
|
+
}>;
|
|
68
|
+
}
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
import { CarbonRestClient } from "../clients/carbon-rest.js";
|
|
2
|
+
import { CarbonSdkClient } from "../clients/carbon-sdk.js";
|
|
3
|
+
import { extractWarnings, normalizeCarbonPrepareResult, } from "../utils/carbon-rest-adapter.js";
|
|
4
|
+
function walletAddress(value) {
|
|
5
|
+
return value;
|
|
6
|
+
}
|
|
7
|
+
export class CarbonService {
|
|
8
|
+
tokenService;
|
|
9
|
+
rest;
|
|
10
|
+
sdk;
|
|
11
|
+
constructor(config, tokenService) {
|
|
12
|
+
this.tokenService = tokenService;
|
|
13
|
+
this.rest = new CarbonRestClient(config.carbonRestBaseUrl);
|
|
14
|
+
this.sdk =
|
|
15
|
+
config.carbonSdkFallback !== false
|
|
16
|
+
? new CarbonSdkClient(config.rpcUrl)
|
|
17
|
+
: null;
|
|
18
|
+
}
|
|
19
|
+
async restRead(tool, body = {}) {
|
|
20
|
+
const result = await this.rest.postTool(tool, body);
|
|
21
|
+
return { ...result, warnings: extractWarnings(result) };
|
|
22
|
+
}
|
|
23
|
+
async restPrepare(tool, body, summary) {
|
|
24
|
+
const from = walletAddress(body.wallet_address);
|
|
25
|
+
const result = await this.rest.postTool(tool, body);
|
|
26
|
+
return normalizeCarbonPrepareResult(from, result, summary);
|
|
27
|
+
}
|
|
28
|
+
async withSdkFallback(restFn, fallbackFn) {
|
|
29
|
+
try {
|
|
30
|
+
return await restFn();
|
|
31
|
+
}
|
|
32
|
+
catch (primary) {
|
|
33
|
+
if (!this.sdk)
|
|
34
|
+
throw primary;
|
|
35
|
+
return fallbackFn();
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
// --- Read (2) ---
|
|
39
|
+
async getStrategies(walletAddress) {
|
|
40
|
+
return this.restRead("get_strategies", { wallet_address: walletAddress });
|
|
41
|
+
}
|
|
42
|
+
async getStrategy(strategyId) {
|
|
43
|
+
return this.restRead("get_strategy", { strategy_id: strategyId });
|
|
44
|
+
}
|
|
45
|
+
// --- Create (5) ---
|
|
46
|
+
async prepareLimitOrder(body) {
|
|
47
|
+
return this.restPrepare("create_limit_order", body, "Carbon limit order");
|
|
48
|
+
}
|
|
49
|
+
async prepareRangeOrder(body) {
|
|
50
|
+
return this.restPrepare("create_range_order", body, "Carbon range order");
|
|
51
|
+
}
|
|
52
|
+
async prepareRecurringStrategy(body) {
|
|
53
|
+
return this.restPrepare("create_recurring_strategy", body, "Carbon recurring strategy");
|
|
54
|
+
}
|
|
55
|
+
async prepareConcentratedStrategy(body) {
|
|
56
|
+
return this.restPrepare("create_concentrated_strategy", body, "Carbon concentrated strategy");
|
|
57
|
+
}
|
|
58
|
+
async prepareFullRangeStrategy(body) {
|
|
59
|
+
return this.restPrepare("create_full_range_strategy", body, "Carbon full-range strategy");
|
|
60
|
+
}
|
|
61
|
+
// --- Manage (7) ---
|
|
62
|
+
async prepareRepriceStrategy(body) {
|
|
63
|
+
return this.restPrepare("reprice_strategy", body, "Carbon reprice strategy");
|
|
64
|
+
}
|
|
65
|
+
async prepareEditStrategy(body) {
|
|
66
|
+
return this.restPrepare("edit_strategy", body, "Carbon edit strategy");
|
|
67
|
+
}
|
|
68
|
+
async prepareDepositBudget(body) {
|
|
69
|
+
return this.restPrepare("deposit_budget", body, "Carbon deposit budget");
|
|
70
|
+
}
|
|
71
|
+
async prepareWithdrawBudget(body) {
|
|
72
|
+
return this.restPrepare("withdraw_budget", body, "Carbon withdraw budget");
|
|
73
|
+
}
|
|
74
|
+
async preparePauseStrategy(body) {
|
|
75
|
+
return this.restPrepare("pause_strategy", body, "Carbon pause strategy");
|
|
76
|
+
}
|
|
77
|
+
async prepareResumeStrategy(body) {
|
|
78
|
+
return this.restPrepare("resume_strategy", body, "Carbon resume strategy");
|
|
79
|
+
}
|
|
80
|
+
async prepareDeleteStrategy(body) {
|
|
81
|
+
return this.restPrepare("delete_strategy", body, "Carbon delete strategy");
|
|
82
|
+
}
|
|
83
|
+
// --- Trade (2) ---
|
|
84
|
+
async getTradeQuote(body) {
|
|
85
|
+
const amount = typeof body.amount === "string" ? Number(body.amount) : body.amount;
|
|
86
|
+
const normalized = {
|
|
87
|
+
...body,
|
|
88
|
+
amount,
|
|
89
|
+
...(body.is_trade_by_target !== undefined
|
|
90
|
+
? { by_target: body.is_trade_by_target }
|
|
91
|
+
: {}),
|
|
92
|
+
};
|
|
93
|
+
return this.withSdkFallback(() => this.restRead("get_trade_quote", normalized), async () => {
|
|
94
|
+
if (!this.sdk)
|
|
95
|
+
throw new Error("Carbon SDK fallback unavailable");
|
|
96
|
+
const sourceToken = String(body.source_token ?? body.token_in);
|
|
97
|
+
const targetToken = String(body.target_token ?? body.token_out);
|
|
98
|
+
const amountStr = String(amount);
|
|
99
|
+
const isTradeByTarget = Boolean(body.is_trade_by_target ?? body.by_target);
|
|
100
|
+
const { tradeData } = await this.sdk.getTradeQuoteFallback(sourceToken, targetToken, amountStr, isTradeByTarget);
|
|
101
|
+
return {
|
|
102
|
+
status: "ok",
|
|
103
|
+
warnings: [],
|
|
104
|
+
source: "sdk_fallback",
|
|
105
|
+
...tradeData,
|
|
106
|
+
};
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
async prepareTrade(body) {
|
|
110
|
+
try {
|
|
111
|
+
return await this.restPrepare("execute_trade", body, "Carbon taker swap");
|
|
112
|
+
}
|
|
113
|
+
catch (primary) {
|
|
114
|
+
if (!this.sdk)
|
|
115
|
+
throw primary;
|
|
116
|
+
const sourceToken = String(body.source_token ?? body.token_in);
|
|
117
|
+
const targetToken = String(body.target_token ?? body.token_out);
|
|
118
|
+
const amount = String(body.amount);
|
|
119
|
+
const minReturn = String(body.min_return ?? "0");
|
|
120
|
+
const preparedFlow = await this.sdk.prepareTradeFallback(walletAddress(body.wallet_address), sourceToken, targetToken, amount, false, minReturn);
|
|
121
|
+
return {
|
|
122
|
+
status: "ok",
|
|
123
|
+
warnings: [],
|
|
124
|
+
preparedFlow,
|
|
125
|
+
source: "sdk_fallback",
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
// --- Explore (8) ---
|
|
130
|
+
async explorePair(body) {
|
|
131
|
+
return this.restRead("explore_pair", body);
|
|
132
|
+
}
|
|
133
|
+
async resolveToken(symbolOrName) {
|
|
134
|
+
try {
|
|
135
|
+
return await this.restRead("resolve_token", {
|
|
136
|
+
token: symbolOrName,
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
catch {
|
|
140
|
+
const resolved = this.tokenService.resolveToken(symbolOrName);
|
|
141
|
+
return {
|
|
142
|
+
status: "ok",
|
|
143
|
+
warnings: [],
|
|
144
|
+
symbol: resolved.symbol,
|
|
145
|
+
address: resolved.address,
|
|
146
|
+
decimals: resolved.decimals,
|
|
147
|
+
source: "celina_registry",
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
async getActivity(body) {
|
|
152
|
+
return this.restRead("get_activity", body);
|
|
153
|
+
}
|
|
154
|
+
async findOpportunities(body) {
|
|
155
|
+
return this.restRead("find_opportunities", body);
|
|
156
|
+
}
|
|
157
|
+
async getProtocolStats(body = {}) {
|
|
158
|
+
const { period_days, ...rest } = body;
|
|
159
|
+
return this.restRead("get_protocol_stats", {
|
|
160
|
+
...rest,
|
|
161
|
+
...(period_days !== undefined ? { days: period_days } : {}),
|
|
162
|
+
});
|
|
163
|
+
}
|
|
164
|
+
async getPriceHistory(body) {
|
|
165
|
+
const { period_days, days, ...rest } = body;
|
|
166
|
+
const lookback = days ?? period_days;
|
|
167
|
+
return this.restRead("get_price_history", {
|
|
168
|
+
...rest,
|
|
169
|
+
...(lookback !== undefined ? { days: lookback } : {}),
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
async simulateStrategy(body) {
|
|
173
|
+
const { days, ...rest } = body;
|
|
174
|
+
if (rest.start === undefined && rest.end === undefined && days !== undefined) {
|
|
175
|
+
const end = Math.floor(Date.now() / 1000);
|
|
176
|
+
const start = end - Number(days) * 86_400;
|
|
177
|
+
return this.restRead("simulate_strategy", { ...rest, start, end });
|
|
178
|
+
}
|
|
179
|
+
return this.restRead("simulate_strategy", body);
|
|
180
|
+
}
|
|
181
|
+
// --- Help (2) ---
|
|
182
|
+
async help(topic) {
|
|
183
|
+
return this.restRead("help", topic ? { topic } : {});
|
|
184
|
+
}
|
|
185
|
+
async learn(topic) {
|
|
186
|
+
return this.restRead("learn", topic ? { topic } : {});
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
//# sourceMappingURL=carbon.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"carbon.service.js","sourceRoot":"","sources":["../../src/services/carbon.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* GoodDollar IdentityV4 whitelist and reverification reads on Celo mainnet.
|
|
3
|
-
*/
|
|
4
1
|
import type { CeloClientFactory } from "../clients/celo-client.js";
|
|
2
|
+
import { type SerializedPreparedFlow } from "../types/prepared.js";
|
|
5
3
|
/** GoodDollar IdentityV4 whitelist status and reverification progress. */
|
|
6
4
|
export declare class GoodDollarService {
|
|
7
5
|
private readonly clientFactory;
|
|
8
6
|
constructor(clientFactory: CeloClientFactory);
|
|
7
|
+
private getPublicClient;
|
|
9
8
|
/**
|
|
10
9
|
* GoodDollar IdentityV4 whitelist status and reverification progress for a wallet.
|
|
11
10
|
* @param address - Wallet to check against IdentityV4
|
|
@@ -41,6 +40,45 @@ export declare class GoodDollarService {
|
|
|
41
40
|
authCount: number;
|
|
42
41
|
};
|
|
43
42
|
}>;
|
|
43
|
+
/**
|
|
44
|
+
* Daily UBI claim eligibility for a wallet against UBISchemeV2 on Celo.
|
|
45
|
+
* Resolves connected wallets via Identity `getWhitelistedRoot`.
|
|
46
|
+
*/
|
|
47
|
+
getUbiClaimEligibility(address: `0x${string}`): Promise<{
|
|
48
|
+
address: `0x${string}`;
|
|
49
|
+
contract: "0x43d72Ff17701B2DA814620735C39C620Ce0ea4A1";
|
|
50
|
+
whitelistedRoot: `0x${string}` | null;
|
|
51
|
+
isConnectedWallet: boolean;
|
|
52
|
+
isEligibleToClaim: boolean;
|
|
53
|
+
claimableAmount: string;
|
|
54
|
+
claimableAmountFormatted: string;
|
|
55
|
+
alreadyClaimedToday: boolean;
|
|
56
|
+
schemePaused: boolean;
|
|
57
|
+
schemeStarted: boolean;
|
|
58
|
+
estimatedDailyUbi: string;
|
|
59
|
+
estimatedDailyUbiFormatted: string;
|
|
60
|
+
currentDailyUbi: string;
|
|
61
|
+
currentDailyUbiFormatted: string;
|
|
62
|
+
reasons: string[];
|
|
63
|
+
identity: {
|
|
64
|
+
isCurrentlyWhitelisted: boolean;
|
|
65
|
+
statusLabel: string;
|
|
66
|
+
reverification: {
|
|
67
|
+
daysSinceLastAuthentication: number;
|
|
68
|
+
currentReverificationPeriodDays: number;
|
|
69
|
+
maxReverificationPeriodDays: number;
|
|
70
|
+
daysUntilReverificationRequired: number;
|
|
71
|
+
reverificationRequiredOn: string;
|
|
72
|
+
reverificationProgressPercent: number;
|
|
73
|
+
isReverificationOverdue: boolean;
|
|
74
|
+
} | null;
|
|
75
|
+
};
|
|
76
|
+
}>;
|
|
77
|
+
/**
|
|
78
|
+
* Build an unsigned UBISchemeV2 `claim()` transaction for daily G$ UBI.
|
|
79
|
+
* Validates whitelist, entitlement, and simulates gas before returning steps.
|
|
80
|
+
*/
|
|
81
|
+
prepareClaimUbi(from: `0x${string}`): Promise<SerializedPreparedFlow>;
|
|
44
82
|
private effectiveAuthCount;
|
|
45
83
|
private fetchReverifyDaysOptions;
|
|
46
84
|
private buildReverificationProgress;
|