@andrewkimjoseph/celina 0.2.2 → 0.2.3
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/build/abis/gooddollar-identity.d.ts +61 -0
- package/build/abis/gooddollar-identity.js +38 -0
- package/build/abis/gooddollar-identity.js.map +1 -0
- package/build/config/gooddollar.d.ts +1 -0
- package/build/config/gooddollar.js +2 -0
- package/build/config/gooddollar.js.map +1 -0
- package/build/context/app-context.d.ts +2 -0
- package/build/context/app-context.js +2 -0
- package/build/context/app-context.js.map +1 -1
- package/build/server/instructions.js +1 -0
- package/build/server/instructions.js.map +1 -1
- package/build/services/gooddollar.service.d.ts +38 -0
- package/build/services/gooddollar.service.js +127 -0
- package/build/services/gooddollar.service.js.map +1 -0
- package/build/services/transaction.service.js +6 -2
- package/build/services/transaction.service.js.map +1 -1
- package/build/tools/gooddollar.tools.d.ts +2 -0
- package/build/tools/gooddollar.tools.js +23 -0
- package/build/tools/gooddollar.tools.js.map +1 -0
- package/build/tools/index.js +2 -0
- package/build/tools/index.js.map +1 -1
- package/build/utils/format-date.d.ts +1 -0
- package/build/utils/format-date.js +12 -0
- package/build/utils/format-date.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
export declare const goodDollarIdentityAbi: readonly [{
|
|
2
|
+
readonly name: "identities";
|
|
3
|
+
readonly type: "function";
|
|
4
|
+
readonly stateMutability: "view";
|
|
5
|
+
readonly inputs: readonly [{
|
|
6
|
+
readonly name: "account";
|
|
7
|
+
readonly type: "address";
|
|
8
|
+
}];
|
|
9
|
+
readonly outputs: readonly [{
|
|
10
|
+
readonly name: "dateAuthenticated";
|
|
11
|
+
readonly type: "uint256";
|
|
12
|
+
}, {
|
|
13
|
+
readonly name: "dateAdded";
|
|
14
|
+
readonly type: "uint256";
|
|
15
|
+
}, {
|
|
16
|
+
readonly name: "did";
|
|
17
|
+
readonly type: "string";
|
|
18
|
+
}, {
|
|
19
|
+
readonly name: "whitelistedOnChainId";
|
|
20
|
+
readonly type: "uint256";
|
|
21
|
+
}, {
|
|
22
|
+
readonly name: "status";
|
|
23
|
+
readonly type: "uint8";
|
|
24
|
+
}, {
|
|
25
|
+
readonly name: "authCount";
|
|
26
|
+
readonly type: "uint32";
|
|
27
|
+
}];
|
|
28
|
+
}, {
|
|
29
|
+
readonly name: "isWhitelisted";
|
|
30
|
+
readonly type: "function";
|
|
31
|
+
readonly stateMutability: "view";
|
|
32
|
+
readonly inputs: readonly [{
|
|
33
|
+
readonly name: "account";
|
|
34
|
+
readonly type: "address";
|
|
35
|
+
}];
|
|
36
|
+
readonly outputs: readonly [{
|
|
37
|
+
readonly name: "";
|
|
38
|
+
readonly type: "bool";
|
|
39
|
+
}];
|
|
40
|
+
}, {
|
|
41
|
+
readonly name: "authenticationPeriod";
|
|
42
|
+
readonly type: "function";
|
|
43
|
+
readonly stateMutability: "view";
|
|
44
|
+
readonly inputs: readonly [];
|
|
45
|
+
readonly outputs: readonly [{
|
|
46
|
+
readonly name: "";
|
|
47
|
+
readonly type: "uint256";
|
|
48
|
+
}];
|
|
49
|
+
}, {
|
|
50
|
+
readonly name: "reverifyDaysOptions";
|
|
51
|
+
readonly type: "function";
|
|
52
|
+
readonly stateMutability: "view";
|
|
53
|
+
readonly inputs: readonly [{
|
|
54
|
+
readonly name: "";
|
|
55
|
+
readonly type: "uint256";
|
|
56
|
+
}];
|
|
57
|
+
readonly outputs: readonly [{
|
|
58
|
+
readonly name: "";
|
|
59
|
+
readonly type: "uint8";
|
|
60
|
+
}];
|
|
61
|
+
}];
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
export const goodDollarIdentityAbi = [
|
|
2
|
+
{
|
|
3
|
+
name: "identities",
|
|
4
|
+
type: "function",
|
|
5
|
+
stateMutability: "view",
|
|
6
|
+
inputs: [{ name: "account", type: "address" }],
|
|
7
|
+
outputs: [
|
|
8
|
+
{ name: "dateAuthenticated", type: "uint256" },
|
|
9
|
+
{ name: "dateAdded", type: "uint256" },
|
|
10
|
+
{ name: "did", type: "string" },
|
|
11
|
+
{ name: "whitelistedOnChainId", type: "uint256" },
|
|
12
|
+
{ name: "status", type: "uint8" },
|
|
13
|
+
{ name: "authCount", type: "uint32" },
|
|
14
|
+
],
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
name: "isWhitelisted",
|
|
18
|
+
type: "function",
|
|
19
|
+
stateMutability: "view",
|
|
20
|
+
inputs: [{ name: "account", type: "address" }],
|
|
21
|
+
outputs: [{ name: "", type: "bool" }],
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
name: "authenticationPeriod",
|
|
25
|
+
type: "function",
|
|
26
|
+
stateMutability: "view",
|
|
27
|
+
inputs: [],
|
|
28
|
+
outputs: [{ name: "", type: "uint256" }],
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
name: "reverifyDaysOptions",
|
|
32
|
+
type: "function",
|
|
33
|
+
stateMutability: "view",
|
|
34
|
+
inputs: [{ name: "", type: "uint256" }],
|
|
35
|
+
outputs: [{ name: "", type: "uint8" }],
|
|
36
|
+
},
|
|
37
|
+
];
|
|
38
|
+
//# sourceMappingURL=gooddollar-identity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gooddollar-identity.js","sourceRoot":"","sources":["../../src/abis/gooddollar-identity.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC;QACE,IAAI,EAAE,YAAY;QAClB,IAAI,EAAE,UAAU;QAChB,eAAe,EAAE,MAAM;QACvB,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QAC9C,OAAO,EAAE;YACP,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,SAAS,EAAE;YAC9C,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE;YACtC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE;YAC/B,EAAE,IAAI,EAAE,sBAAsB,EAAE,IAAI,EAAE,SAAS,EAAE;YACjD,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE;YACjC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE;SACtC;KACF;IACD;QACE,IAAI,EAAE,eAAe;QACrB,IAAI,EAAE,UAAU;QAChB,eAAe,EAAE,MAAM;QACvB,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QAC9C,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;KACtC;IACD;QACE,IAAI,EAAE,sBAAsB;QAC5B,IAAI,EAAE,UAAU;QAChB,eAAe,EAAE,MAAM;QACvB,MAAM,EAAE,EAAE;QACV,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;KACzC;IACD;QACE,IAAI,EAAE,qBAAqB;QAC3B,IAAI,EAAE,UAAU;QAChB,eAAe,EAAE,MAAM;QACvB,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QACvC,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;KACvC;CACqB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const GOODDOLLAR_IDENTITY_ADDRESS: "0xC361A6E67822a0EDc17D899227dd9FC50BD62F42";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gooddollar.js","sourceRoot":"","sources":["../../src/config/gooddollar.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,2BAA2B,GACtC,4CAAqD,CAAC"}
|
|
@@ -3,6 +3,7 @@ import { BlockchainService } from "../services/blockchain.service.js";
|
|
|
3
3
|
import { AccountService } from "../services/account.service.js";
|
|
4
4
|
import { TokenService } from "../services/token.service.js";
|
|
5
5
|
import { TransactionService } from "../services/transaction.service.js";
|
|
6
|
+
import { GoodDollarService } from "../services/gooddollar.service.js";
|
|
6
7
|
export interface AppContext {
|
|
7
8
|
config: {
|
|
8
9
|
hasWallet: boolean;
|
|
@@ -12,5 +13,6 @@ export interface AppContext {
|
|
|
12
13
|
account: AccountService;
|
|
13
14
|
token: TokenService;
|
|
14
15
|
transaction: TransactionService;
|
|
16
|
+
gooddollar: GoodDollarService;
|
|
15
17
|
}
|
|
16
18
|
export declare function createAppContext(clientFactory: CeloClientFactory, walletAddress?: `0x${string}`): AppContext;
|
|
@@ -2,6 +2,7 @@ import { BlockchainService } from "../services/blockchain.service.js";
|
|
|
2
2
|
import { AccountService } from "../services/account.service.js";
|
|
3
3
|
import { TokenService } from "../services/token.service.js";
|
|
4
4
|
import { TransactionService } from "../services/transaction.service.js";
|
|
5
|
+
import { GoodDollarService } from "../services/gooddollar.service.js";
|
|
5
6
|
export function createAppContext(clientFactory, walletAddress) {
|
|
6
7
|
return {
|
|
7
8
|
config: {
|
|
@@ -12,6 +13,7 @@ export function createAppContext(clientFactory, walletAddress) {
|
|
|
12
13
|
account: new AccountService(clientFactory),
|
|
13
14
|
token: new TokenService(clientFactory),
|
|
14
15
|
transaction: new TransactionService(clientFactory),
|
|
16
|
+
gooddollar: new GoodDollarService(clientFactory),
|
|
15
17
|
};
|
|
16
18
|
}
|
|
17
19
|
//# sourceMappingURL=app-context.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app-context.js","sourceRoot":"","sources":["../../src/context/app-context.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;
|
|
1
|
+
{"version":3,"file":"app-context.js","sourceRoot":"","sources":["../../src/context/app-context.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AACxE,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AActE,MAAM,UAAU,gBAAgB,CAC9B,aAAgC,EAChC,aAA6B;IAE7B,OAAO;QACL,MAAM,EAAE;YACN,SAAS,EAAE,OAAO,CAAC,aAAa,CAAC;YACjC,aAAa;SACd;QACD,UAAU,EAAE,IAAI,iBAAiB,CAAC,aAAa,CAAC;QAChD,OAAO,EAAE,IAAI,cAAc,CAAC,aAAa,CAAC;QAC1C,KAAK,EAAE,IAAI,YAAY,CAAC,aAAa,CAAC;QACtC,WAAW,EAAE,IAAI,kBAAkB,CAAC,aAAa,CAAC;QAClD,UAAU,EAAE,IAAI,iBAAiB,CAAC,aAAa,CAAC;KACjD,CAAC;AACJ,CAAC"}
|
|
@@ -7,6 +7,7 @@ Guidelines:
|
|
|
7
7
|
- Write tools require CELO_PRIVATE_KEY in the server environment.
|
|
8
8
|
- Known tokens are defined in a single registry: CELO (native), mainnet stablecoins (USDm, EURm, USDC, USDT, etc.), and GoodDollar.
|
|
9
9
|
- Use get_stablecoin_balances to scan all stablecoins at once; use get_celo_balances with a tokens list for specific symbols.
|
|
10
|
+
- Use get_gooddollar_whitelisting_info to check GoodDollar IdentityV4 whitelist status, whitelisting date, and reverification progress for a wallet.
|
|
10
11
|
|
|
11
12
|
Future tools (add as new modules in src/tools/): lend on Aave, Self verify, Self Agent ID check.
|
|
12
13
|
`.trim();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"instructions.js","sourceRoot":"","sources":["../../src/server/instructions.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,mBAAmB,GAAG
|
|
1
|
+
{"version":3,"file":"instructions.js","sourceRoot":"","sources":["../../src/server/instructions.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,mBAAmB,GAAG;;;;;;;;;;;;CAYlC,CAAC,IAAI,EAAE,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { CeloClientFactory } from "../clients/celo-client.js";
|
|
2
|
+
export declare class GoodDollarService {
|
|
3
|
+
private readonly clientFactory;
|
|
4
|
+
constructor(clientFactory: CeloClientFactory);
|
|
5
|
+
getWhitelistingInfo(address: `0x${string}`): Promise<{
|
|
6
|
+
address: `0x${string}`;
|
|
7
|
+
contract: "0xC361A6E67822a0EDc17D899227dd9FC50BD62F42";
|
|
8
|
+
isCurrentlyWhitelisted: boolean;
|
|
9
|
+
status: number;
|
|
10
|
+
statusLabel: string;
|
|
11
|
+
whitelistedOn: string | null;
|
|
12
|
+
lastAuthenticatedOn: string | null;
|
|
13
|
+
fieldDescriptions: {
|
|
14
|
+
whitelistedOn: string;
|
|
15
|
+
lastAuthenticatedOn: string;
|
|
16
|
+
};
|
|
17
|
+
reverification: {
|
|
18
|
+
daysSinceLastAuthentication: number;
|
|
19
|
+
currentReverificationPeriodDays: number;
|
|
20
|
+
maxReverificationPeriodDays: number;
|
|
21
|
+
daysUntilReverificationRequired: number;
|
|
22
|
+
reverificationRequiredOn: string;
|
|
23
|
+
reverificationProgressPercent: number;
|
|
24
|
+
isReverificationOverdue: boolean;
|
|
25
|
+
} | null;
|
|
26
|
+
identity: {
|
|
27
|
+
dateAuthenticated: number;
|
|
28
|
+
dateAdded: number;
|
|
29
|
+
did: string;
|
|
30
|
+
whitelistedOnChainId: number;
|
|
31
|
+
status: number;
|
|
32
|
+
authCount: number;
|
|
33
|
+
};
|
|
34
|
+
}>;
|
|
35
|
+
private effectiveAuthCount;
|
|
36
|
+
private fetchReverifyDaysOptions;
|
|
37
|
+
private buildReverificationProgress;
|
|
38
|
+
}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import { goodDollarIdentityAbi } from "../abis/gooddollar-identity.js";
|
|
2
|
+
import { GOODDOLLAR_IDENTITY_ADDRESS } from "../config/gooddollar.js";
|
|
3
|
+
import { formatUnixDate } from "../utils/format-date.js";
|
|
4
|
+
const STATUS_LABELS = {
|
|
5
|
+
0: "none",
|
|
6
|
+
1: "whitelisted",
|
|
7
|
+
2: "dao_contract",
|
|
8
|
+
255: "blacklisted",
|
|
9
|
+
};
|
|
10
|
+
// Post-upgrade users authenticated before this timestamp use the last reverify step.
|
|
11
|
+
const LEGACY_AUTH_CUTOFF = 1772697574;
|
|
12
|
+
function statusLabel(status) {
|
|
13
|
+
return STATUS_LABELS[status] ?? "unknown";
|
|
14
|
+
}
|
|
15
|
+
export class GoodDollarService {
|
|
16
|
+
clientFactory;
|
|
17
|
+
constructor(clientFactory) {
|
|
18
|
+
this.clientFactory = clientFactory;
|
|
19
|
+
}
|
|
20
|
+
async getWhitelistingInfo(address) {
|
|
21
|
+
const { public: client } = this.clientFactory.getClients();
|
|
22
|
+
const contract = GOODDOLLAR_IDENTITY_ADDRESS;
|
|
23
|
+
const [identityResult, isCurrentlyWhitelisted, maxReverificationPeriodDays, reverifyDaysOptions,] = await Promise.all([
|
|
24
|
+
client.readContract({
|
|
25
|
+
address: contract,
|
|
26
|
+
abi: goodDollarIdentityAbi,
|
|
27
|
+
functionName: "identities",
|
|
28
|
+
args: [address],
|
|
29
|
+
}),
|
|
30
|
+
client.readContract({
|
|
31
|
+
address: contract,
|
|
32
|
+
abi: goodDollarIdentityAbi,
|
|
33
|
+
functionName: "isWhitelisted",
|
|
34
|
+
args: [address],
|
|
35
|
+
}),
|
|
36
|
+
client.readContract({
|
|
37
|
+
address: contract,
|
|
38
|
+
abi: goodDollarIdentityAbi,
|
|
39
|
+
functionName: "authenticationPeriod",
|
|
40
|
+
}),
|
|
41
|
+
this.fetchReverifyDaysOptions(client, contract),
|
|
42
|
+
]);
|
|
43
|
+
const [dateAuthenticated, dateAdded, did, whitelistedOnChainId, status, authCount,] = identityResult;
|
|
44
|
+
const statusNum = Number(status);
|
|
45
|
+
const dateAuthenticatedNum = Number(dateAuthenticated);
|
|
46
|
+
const dateAddedNum = Number(dateAdded);
|
|
47
|
+
const authCountNum = Number(authCount);
|
|
48
|
+
let currentReverificationPeriodDays = null;
|
|
49
|
+
if (statusNum === 1 && dateAuthenticatedNum > 0 && reverifyDaysOptions.length > 0) {
|
|
50
|
+
const effectiveAuthCount = this.effectiveAuthCount(dateAuthenticatedNum, authCountNum, reverifyDaysOptions.length);
|
|
51
|
+
currentReverificationPeriodDays =
|
|
52
|
+
reverifyDaysOptions[effectiveAuthCount] ?? null;
|
|
53
|
+
}
|
|
54
|
+
const isWhitelistedStatus = statusNum === 1 && dateAddedNum > 0;
|
|
55
|
+
const reverification = statusNum === 1 && dateAuthenticatedNum > 0 && currentReverificationPeriodDays !== null
|
|
56
|
+
? this.buildReverificationProgress(dateAuthenticatedNum, currentReverificationPeriodDays, Number(maxReverificationPeriodDays))
|
|
57
|
+
: null;
|
|
58
|
+
return {
|
|
59
|
+
address,
|
|
60
|
+
contract,
|
|
61
|
+
isCurrentlyWhitelisted,
|
|
62
|
+
status: statusNum,
|
|
63
|
+
statusLabel: statusLabel(statusNum),
|
|
64
|
+
whitelistedOn: isWhitelistedStatus ? formatUnixDate(dateAddedNum) : null,
|
|
65
|
+
lastAuthenticatedOn: dateAuthenticatedNum > 0 ? formatUnixDate(dateAuthenticatedNum) : null,
|
|
66
|
+
fieldDescriptions: {
|
|
67
|
+
whitelistedOn: "When the wallet was first added to the GoodDollar whitelist.",
|
|
68
|
+
lastAuthenticatedOn: "When the wallet last verified its identity. Periodic reverification is required to remain whitelisted.",
|
|
69
|
+
},
|
|
70
|
+
reverification,
|
|
71
|
+
identity: {
|
|
72
|
+
dateAuthenticated: dateAuthenticatedNum,
|
|
73
|
+
dateAdded: dateAddedNum,
|
|
74
|
+
did,
|
|
75
|
+
whitelistedOnChainId: Number(whitelistedOnChainId),
|
|
76
|
+
status: statusNum,
|
|
77
|
+
authCount: authCountNum,
|
|
78
|
+
},
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
effectiveAuthCount(dateAuthenticated, authCount, optionsLength) {
|
|
82
|
+
if (dateAuthenticated < LEGACY_AUTH_CUTOFF) {
|
|
83
|
+
return optionsLength - 1;
|
|
84
|
+
}
|
|
85
|
+
if (authCount >= optionsLength) {
|
|
86
|
+
return 0;
|
|
87
|
+
}
|
|
88
|
+
return authCount;
|
|
89
|
+
}
|
|
90
|
+
async fetchReverifyDaysOptions(client, contract) {
|
|
91
|
+
const options = [];
|
|
92
|
+
for (let index = 0; index < 8; index++) {
|
|
93
|
+
try {
|
|
94
|
+
const value = await client.readContract({
|
|
95
|
+
address: contract,
|
|
96
|
+
abi: goodDollarIdentityAbi,
|
|
97
|
+
functionName: "reverifyDaysOptions",
|
|
98
|
+
args: [BigInt(index)],
|
|
99
|
+
});
|
|
100
|
+
options.push(Number(value));
|
|
101
|
+
}
|
|
102
|
+
catch {
|
|
103
|
+
break;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
return options;
|
|
107
|
+
}
|
|
108
|
+
buildReverificationProgress(dateAuthenticated, currentReverificationPeriodDays, maxReverificationPeriodDays) {
|
|
109
|
+
const nowSec = Math.floor(Date.now() / 1000);
|
|
110
|
+
const daysSinceLastAuthentication = Math.floor((nowSec - dateAuthenticated) / 86400);
|
|
111
|
+
const daysUntilReverificationRequired = currentReverificationPeriodDays - daysSinceLastAuthentication;
|
|
112
|
+
const reverificationRequiredTimestamp = dateAuthenticated + currentReverificationPeriodDays * 86400;
|
|
113
|
+
const isReverificationOverdue = daysUntilReverificationRequired < 0;
|
|
114
|
+
const reverificationProgressPercent = Math.min(100, Math.max(0, Math.round((daysSinceLastAuthentication / currentReverificationPeriodDays) *
|
|
115
|
+
100)));
|
|
116
|
+
return {
|
|
117
|
+
daysSinceLastAuthentication,
|
|
118
|
+
currentReverificationPeriodDays,
|
|
119
|
+
maxReverificationPeriodDays,
|
|
120
|
+
daysUntilReverificationRequired,
|
|
121
|
+
reverificationRequiredOn: formatUnixDate(reverificationRequiredTimestamp),
|
|
122
|
+
reverificationProgressPercent,
|
|
123
|
+
isReverificationOverdue,
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
//# sourceMappingURL=gooddollar.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gooddollar.service.js","sourceRoot":"","sources":["../../src/services/gooddollar.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -66,6 +66,10 @@ export class TransactionService {
|
|
|
66
66
|
if (!wallet || !from) {
|
|
67
67
|
throw new Error("Wallet client unavailable. Provide encryptedPrivateKey or set CELO_PRIVATE_KEY.");
|
|
68
68
|
}
|
|
69
|
+
const account = wallet.account;
|
|
70
|
+
if (!account) {
|
|
71
|
+
throw new Error("Wallet account unavailable.");
|
|
72
|
+
}
|
|
69
73
|
const resolved = this.tokenService.resolveToken(token);
|
|
70
74
|
const chain = client.chain;
|
|
71
75
|
if (!chain) {
|
|
@@ -74,7 +78,7 @@ export class TransactionService {
|
|
|
74
78
|
if (resolved.address === "native") {
|
|
75
79
|
const hash = await wallet.sendTransaction({
|
|
76
80
|
chain,
|
|
77
|
-
account
|
|
81
|
+
account,
|
|
78
82
|
to,
|
|
79
83
|
value: parseEther(amount),
|
|
80
84
|
});
|
|
@@ -92,7 +96,7 @@ export class TransactionService {
|
|
|
92
96
|
const tokenAmount = this.tokenService.parseAmount(amount, resolved.decimals);
|
|
93
97
|
const hash = await wallet.writeContract({
|
|
94
98
|
chain,
|
|
95
|
-
account
|
|
99
|
+
account,
|
|
96
100
|
address: resolved.address,
|
|
97
101
|
abi: erc20Abi,
|
|
98
102
|
functionName: "transfer",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transaction.service.js","sourceRoot":"","sources":["../../src/services/transaction.service.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"transaction.service.js","sourceRoot":"","sources":["../../src/services/transaction.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { addressSchema } from "../schemas/common.js";
|
|
3
|
+
import { err, ok } from "./helpers.js";
|
|
4
|
+
export const gooddollarTools = {
|
|
5
|
+
register(server, ctx) {
|
|
6
|
+
server.registerTool("get_gooddollar_whitelisting_info", {
|
|
7
|
+
title: "Get GoodDollar Whitelisting Info",
|
|
8
|
+
description: "Returns GoodDollar IdentityV4 whitelisting status for a wallet, including when it was whitelisted, last authentication date, and reverification progress.",
|
|
9
|
+
inputSchema: z.object({
|
|
10
|
+
address: addressSchema,
|
|
11
|
+
}),
|
|
12
|
+
annotations: { readOnlyHint: true, idempotentHint: true },
|
|
13
|
+
}, async ({ address }) => {
|
|
14
|
+
try {
|
|
15
|
+
return ok(await ctx.gooddollar.getWhitelistingInfo(address));
|
|
16
|
+
}
|
|
17
|
+
catch (error) {
|
|
18
|
+
return err(error instanceof Error ? error.message : String(error));
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
|
+
},
|
|
22
|
+
};
|
|
23
|
+
//# sourceMappingURL=gooddollar.tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gooddollar.tools.js","sourceRoot":"","sources":["../../src/tools/gooddollar.tools.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAEvC,MAAM,CAAC,MAAM,eAAe,GAAe;IACzC,QAAQ,CAAC,MAAiB,EAAE,GAAe;QACzC,MAAM,CAAC,YAAY,CACjB,kCAAkC,EAClC;YACE,KAAK,EAAE,kCAAkC;YACzC,WAAW,EACT,2JAA2J;YAC7J,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;gBACpB,OAAO,EAAE,aAAa;aACvB,CAAC;YACF,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SAC1D,EACD,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;YACpB,IAAI,CAAC;gBACH,OAAO,EAAE,CACP,MAAM,GAAG,CAAC,UAAU,CAAC,mBAAmB,CAAC,OAAwB,CAAC,CACnE,CAAC;YACJ,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,GAAG,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YACrE,CAAC;QACH,CAAC,CACF,CAAC;IACJ,CAAC;CACF,CAAC"}
|
package/build/tools/index.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { accountTools, blockchainTools } from "./blockchain.tools.js";
|
|
2
|
+
import { gooddollarTools } from "./gooddollar.tools.js";
|
|
2
3
|
import { tokenTools } from "./token.tools.js";
|
|
3
4
|
import { transactionTools } from "./transaction.tools.js";
|
|
4
5
|
import { walletTools } from "./wallet.tools.js";
|
|
@@ -8,6 +9,7 @@ export const toolModules = [
|
|
|
8
9
|
tokenTools,
|
|
9
10
|
walletTools,
|
|
10
11
|
transactionTools,
|
|
12
|
+
gooddollarTools,
|
|
11
13
|
];
|
|
12
14
|
export function registerAllTools(server, ctx) {
|
|
13
15
|
for (const module of toolModules) {
|
package/build/tools/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACtE,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,MAAM,CAAC,MAAM,WAAW,GAAiB;IACvC,eAAe;IACf,YAAY;IACZ,UAAU;IACV,WAAW;IACX,gBAAgB;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,MAAM,CAAC,MAAM,WAAW,GAAiB;IACvC,eAAe;IACf,YAAY;IACZ,UAAU;IACV,WAAW;IACX,gBAAgB;IAChB,eAAe;CAChB,CAAC;AAEF,MAAM,UAAU,gBAAgB,CAAC,MAAiB,EAAE,GAAe;IACjE,KAAK,MAAM,MAAM,IAAI,WAAW,EAAE,CAAC;QACjC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC/B,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function formatUnixDate(unixSeconds: number | bigint): string;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export function formatUnixDate(unixSeconds) {
|
|
2
|
+
const date = new Date(Number(unixSeconds) * 1000);
|
|
3
|
+
return new Intl.DateTimeFormat("en-US", {
|
|
4
|
+
month: "long",
|
|
5
|
+
day: "numeric",
|
|
6
|
+
year: "numeric",
|
|
7
|
+
timeZone: "UTC",
|
|
8
|
+
})
|
|
9
|
+
.format(date)
|
|
10
|
+
.replace(",", "");
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=format-date.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format-date.js","sourceRoot":"","sources":["../../src/utils/format-date.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,cAAc,CAAC,WAA4B;IACzD,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,CAAC;IAClD,OAAO,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE;QACtC,KAAK,EAAE,MAAM;QACb,GAAG,EAAE,SAAS;QACd,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,KAAK;KAChB,CAAC;SACC,MAAM,CAAC,IAAI,CAAC;SACZ,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;AACtB,CAAC"}
|
package/package.json
CHANGED