@cascade-fyi/sati-sdk 0.2.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/dist/index.cjs +2323 -0
- package/dist/index.d.cts +1322 -0
- package/dist/index.d.mts +1322 -0
- package/dist/index.mjs +2174 -0
- package/idl.json +496 -0
- package/package.json +91 -0
package/dist/index.d.mts
ADDED
|
@@ -0,0 +1,1322 @@
|
|
|
1
|
+
import { Account, AccountMeta, AccountSignerMeta, Address, Address as Address$1, Codec, Decoder, EncodedAccount, Encoder, FetchAccountConfig, FetchAccountsConfig, FixedSizeCodec, FixedSizeDecoder, FixedSizeEncoder, Instruction, InstructionWithAccounts, InstructionWithData, KeyPairSigner, MaybeAccount, MaybeEncodedAccount, Option, OptionOrNullable, ReadonlyAccount, ReadonlySignerAccount, ReadonlyUint8Array, SOLANA_ERROR__INSTRUCTION_ERROR__CUSTOM, SolanaError, TransactionSigner, WritableAccount, WritableSignerAccount, address, fetchEncodedAccount, fetchEncodedAccounts } from "@solana/kit";
|
|
2
|
+
import * as sas_lib0 from "sas-lib";
|
|
3
|
+
import { SOLANA_ATTESTATION_SERVICE_PROGRAM_ADDRESS, deriveAttestationPda, deriveCredentialPda, deriveEventAuthorityAddress, deriveSchemaPda, deserializeAttestationData, fetchAllMaybeSchema, fetchAttestation, fetchMaybeCredential, fetchMaybeSchema, fetchSchema, getCloseAttestationInstruction, getCreateAttestationInstruction, getCreateCredentialInstruction, getCreateSchemaInstruction, serializeAttestationData } from "sas-lib";
|
|
4
|
+
|
|
5
|
+
//#region src/generated/accounts/registryConfig.d.ts
|
|
6
|
+
|
|
7
|
+
declare const REGISTRY_CONFIG_DISCRIMINATOR: Uint8Array<ArrayBuffer>;
|
|
8
|
+
declare function getRegistryConfigDiscriminatorBytes(): ReadonlyUint8Array;
|
|
9
|
+
type RegistryConfig = {
|
|
10
|
+
discriminator: ReadonlyUint8Array;
|
|
11
|
+
/** SATI TokenGroup mint address */
|
|
12
|
+
groupMint: Address$1;
|
|
13
|
+
/**
|
|
14
|
+
* Authority that can update registry settings
|
|
15
|
+
* Set to Pubkey::default() to make immutable
|
|
16
|
+
*/
|
|
17
|
+
authority: Address$1;
|
|
18
|
+
/** Total agents registered (counter) */
|
|
19
|
+
totalAgents: bigint;
|
|
20
|
+
/** PDA bump seed (stored for efficient CPI signing) */
|
|
21
|
+
bump: number;
|
|
22
|
+
};
|
|
23
|
+
type RegistryConfigArgs = {
|
|
24
|
+
/** SATI TokenGroup mint address */
|
|
25
|
+
groupMint: Address$1;
|
|
26
|
+
/**
|
|
27
|
+
* Authority that can update registry settings
|
|
28
|
+
* Set to Pubkey::default() to make immutable
|
|
29
|
+
*/
|
|
30
|
+
authority: Address$1;
|
|
31
|
+
/** Total agents registered (counter) */
|
|
32
|
+
totalAgents: number | bigint;
|
|
33
|
+
/** PDA bump seed (stored for efficient CPI signing) */
|
|
34
|
+
bump: number;
|
|
35
|
+
};
|
|
36
|
+
/** Gets the encoder for {@link RegistryConfigArgs} account data. */
|
|
37
|
+
declare function getRegistryConfigEncoder(): FixedSizeEncoder<RegistryConfigArgs>;
|
|
38
|
+
/** Gets the decoder for {@link RegistryConfig} account data. */
|
|
39
|
+
declare function getRegistryConfigDecoder(): FixedSizeDecoder<RegistryConfig>;
|
|
40
|
+
/** Gets the codec for {@link RegistryConfig} account data. */
|
|
41
|
+
declare function getRegistryConfigCodec(): FixedSizeCodec<RegistryConfigArgs, RegistryConfig>;
|
|
42
|
+
declare function decodeRegistryConfig<TAddress extends string = string>(encodedAccount: EncodedAccount<TAddress>): Account<RegistryConfig, TAddress>;
|
|
43
|
+
declare function decodeRegistryConfig<TAddress extends string = string>(encodedAccount: MaybeEncodedAccount<TAddress>): MaybeAccount<RegistryConfig, TAddress>;
|
|
44
|
+
declare function fetchRegistryConfig<TAddress extends string = string>(rpc: Parameters<typeof fetchEncodedAccount>[0], address: Address$1<TAddress>, config?: FetchAccountConfig): Promise<Account<RegistryConfig, TAddress>>;
|
|
45
|
+
declare function fetchMaybeRegistryConfig<TAddress extends string = string>(rpc: Parameters<typeof fetchEncodedAccount>[0], address: Address$1<TAddress>, config?: FetchAccountConfig): Promise<MaybeAccount<RegistryConfig, TAddress>>;
|
|
46
|
+
declare function fetchAllRegistryConfig(rpc: Parameters<typeof fetchEncodedAccounts>[0], addresses: Array<Address$1>, config?: FetchAccountsConfig): Promise<Account<RegistryConfig>[]>;
|
|
47
|
+
declare function fetchAllMaybeRegistryConfig(rpc: Parameters<typeof fetchEncodedAccounts>[0], addresses: Array<Address$1>, config?: FetchAccountsConfig): Promise<MaybeAccount<RegistryConfig>[]>;
|
|
48
|
+
declare function getRegistryConfigSize(): number;
|
|
49
|
+
//#endregion
|
|
50
|
+
//#region src/generated/errors/satiRegistry.d.ts
|
|
51
|
+
/** InvalidGroupMint: Invalid group mint - must be owned by Token-2022 with TokenGroup extension */
|
|
52
|
+
declare const SATI_REGISTRY_ERROR__INVALID_GROUP_MINT = 6000;
|
|
53
|
+
/** InvalidAuthority: Invalid authority */
|
|
54
|
+
declare const SATI_REGISTRY_ERROR__INVALID_AUTHORITY = 6001;
|
|
55
|
+
/** ImmutableAuthority: Authority is immutable (renounced) */
|
|
56
|
+
declare const SATI_REGISTRY_ERROR__IMMUTABLE_AUTHORITY = 6002;
|
|
57
|
+
/** NameTooLong: Name too long (max 32 bytes) */
|
|
58
|
+
declare const SATI_REGISTRY_ERROR__NAME_TOO_LONG = 6003;
|
|
59
|
+
/** SymbolTooLong: Symbol too long (max 10 bytes) */
|
|
60
|
+
declare const SATI_REGISTRY_ERROR__SYMBOL_TOO_LONG = 6004;
|
|
61
|
+
/** UriTooLong: URI too long (max 200 bytes) */
|
|
62
|
+
declare const SATI_REGISTRY_ERROR__URI_TOO_LONG = 6005;
|
|
63
|
+
/** TooManyMetadataEntries: Too many metadata entries (max 10) */
|
|
64
|
+
declare const SATI_REGISTRY_ERROR__TOO_MANY_METADATA_ENTRIES = 6006;
|
|
65
|
+
/** MetadataKeyTooLong: Metadata key too long (max 32 bytes) */
|
|
66
|
+
declare const SATI_REGISTRY_ERROR__METADATA_KEY_TOO_LONG = 6007;
|
|
67
|
+
/** MetadataValueTooLong: Metadata value too long (max 200 bytes) */
|
|
68
|
+
declare const SATI_REGISTRY_ERROR__METADATA_VALUE_TOO_LONG = 6008;
|
|
69
|
+
/** Overflow: Arithmetic overflow */
|
|
70
|
+
declare const SATI_REGISTRY_ERROR__OVERFLOW = 6009;
|
|
71
|
+
/** MintAuthorityNotRenounced: Failed to renounce mint authority - supply guarantee violated */
|
|
72
|
+
declare const SATI_REGISTRY_ERROR__MINT_AUTHORITY_NOT_RENOUNCED = 6010;
|
|
73
|
+
type SatiRegistryError = typeof SATI_REGISTRY_ERROR__IMMUTABLE_AUTHORITY | typeof SATI_REGISTRY_ERROR__INVALID_AUTHORITY | typeof SATI_REGISTRY_ERROR__INVALID_GROUP_MINT | typeof SATI_REGISTRY_ERROR__METADATA_KEY_TOO_LONG | typeof SATI_REGISTRY_ERROR__METADATA_VALUE_TOO_LONG | typeof SATI_REGISTRY_ERROR__MINT_AUTHORITY_NOT_RENOUNCED | typeof SATI_REGISTRY_ERROR__NAME_TOO_LONG | typeof SATI_REGISTRY_ERROR__OVERFLOW | typeof SATI_REGISTRY_ERROR__SYMBOL_TOO_LONG | typeof SATI_REGISTRY_ERROR__TOO_MANY_METADATA_ENTRIES | typeof SATI_REGISTRY_ERROR__URI_TOO_LONG;
|
|
74
|
+
declare function getSatiRegistryErrorMessage(code: SatiRegistryError): string;
|
|
75
|
+
declare function isSatiRegistryError<TProgramErrorCode extends SatiRegistryError>(error: unknown, transactionMessage: {
|
|
76
|
+
instructions: Record<number, {
|
|
77
|
+
programAddress: Address$1;
|
|
78
|
+
}>;
|
|
79
|
+
}, code?: TProgramErrorCode): error is SolanaError<typeof SOLANA_ERROR__INSTRUCTION_ERROR__CUSTOM> & Readonly<{
|
|
80
|
+
context: Readonly<{
|
|
81
|
+
code: TProgramErrorCode;
|
|
82
|
+
}>;
|
|
83
|
+
}>;
|
|
84
|
+
//#endregion
|
|
85
|
+
//#region src/generated/programs/satiRegistry.d.ts
|
|
86
|
+
declare const SATI_REGISTRY_PROGRAM_ADDRESS: Address$1<"satiFVb9MDmfR4ZfRedyKPLGLCg3saQ7Wbxtx9AEeeF">;
|
|
87
|
+
declare enum SatiRegistryAccount {
|
|
88
|
+
RegistryConfig = 0,
|
|
89
|
+
}
|
|
90
|
+
declare function identifySatiRegistryAccount(account: {
|
|
91
|
+
data: ReadonlyUint8Array;
|
|
92
|
+
} | ReadonlyUint8Array): SatiRegistryAccount;
|
|
93
|
+
declare enum SatiRegistryInstruction {
|
|
94
|
+
Initialize = 0,
|
|
95
|
+
RegisterAgent = 1,
|
|
96
|
+
UpdateRegistryAuthority = 2,
|
|
97
|
+
}
|
|
98
|
+
declare function identifySatiRegistryInstruction(instruction: {
|
|
99
|
+
data: ReadonlyUint8Array;
|
|
100
|
+
} | ReadonlyUint8Array): SatiRegistryInstruction;
|
|
101
|
+
type ParsedSatiRegistryInstruction<TProgram extends string = "satiFVb9MDmfR4ZfRedyKPLGLCg3saQ7Wbxtx9AEeeF"> = ({
|
|
102
|
+
instructionType: SatiRegistryInstruction.Initialize;
|
|
103
|
+
} & ParsedInitializeInstruction<TProgram>) | ({
|
|
104
|
+
instructionType: SatiRegistryInstruction.RegisterAgent;
|
|
105
|
+
} & ParsedRegisterAgentInstruction<TProgram>) | ({
|
|
106
|
+
instructionType: SatiRegistryInstruction.UpdateRegistryAuthority;
|
|
107
|
+
} & ParsedUpdateRegistryAuthorityInstruction<TProgram>);
|
|
108
|
+
//#endregion
|
|
109
|
+
//#region src/generated/instructions/initialize.d.ts
|
|
110
|
+
declare const INITIALIZE_DISCRIMINATOR: Uint8Array<ArrayBuffer>;
|
|
111
|
+
declare function getInitializeDiscriminatorBytes(): ReadonlyUint8Array;
|
|
112
|
+
type InitializeInstruction<TProgram extends string = typeof SATI_REGISTRY_PROGRAM_ADDRESS, TAccountAuthority extends string | AccountMeta<string> = string, TAccountRegistryConfig extends string | AccountMeta<string> = string, TAccountGroupMint extends string | AccountMeta<string> = string, TAccountSystemProgram extends string | AccountMeta<string> = "11111111111111111111111111111111", TRemainingAccounts extends readonly AccountMeta<string>[] = []> = Instruction<TProgram> & InstructionWithData<ReadonlyUint8Array> & InstructionWithAccounts<[TAccountAuthority extends string ? WritableSignerAccount<TAccountAuthority> & AccountSignerMeta<TAccountAuthority> : TAccountAuthority, TAccountRegistryConfig extends string ? WritableAccount<TAccountRegistryConfig> : TAccountRegistryConfig, TAccountGroupMint extends string ? WritableAccount<TAccountGroupMint> : TAccountGroupMint, TAccountSystemProgram extends string ? ReadonlyAccount<TAccountSystemProgram> : TAccountSystemProgram, ...TRemainingAccounts]>;
|
|
113
|
+
type InitializeInstructionData = {
|
|
114
|
+
discriminator: ReadonlyUint8Array;
|
|
115
|
+
};
|
|
116
|
+
type InitializeInstructionDataArgs = {};
|
|
117
|
+
declare function getInitializeInstructionDataEncoder(): FixedSizeEncoder<InitializeInstructionDataArgs>;
|
|
118
|
+
declare function getInitializeInstructionDataDecoder(): FixedSizeDecoder<InitializeInstructionData>;
|
|
119
|
+
declare function getInitializeInstructionDataCodec(): FixedSizeCodec<InitializeInstructionDataArgs, InitializeInstructionData>;
|
|
120
|
+
type InitializeAsyncInput<TAccountAuthority extends string = string, TAccountRegistryConfig extends string = string, TAccountGroupMint extends string = string, TAccountSystemProgram extends string = string> = {
|
|
121
|
+
/** Initial registry authority (will be multisig in production) */
|
|
122
|
+
authority: TransactionSigner<TAccountAuthority>;
|
|
123
|
+
/** Registry configuration PDA */
|
|
124
|
+
registryConfig?: Address$1<TAccountRegistryConfig>;
|
|
125
|
+
/** TokenGroup mint - created and initialized by client, then finalized here */
|
|
126
|
+
groupMint: Address$1<TAccountGroupMint>;
|
|
127
|
+
systemProgram?: Address$1<TAccountSystemProgram>;
|
|
128
|
+
};
|
|
129
|
+
declare function getInitializeInstructionAsync<TAccountAuthority extends string, TAccountRegistryConfig extends string, TAccountGroupMint extends string, TAccountSystemProgram extends string, TProgramAddress extends Address$1 = typeof SATI_REGISTRY_PROGRAM_ADDRESS>(input: InitializeAsyncInput<TAccountAuthority, TAccountRegistryConfig, TAccountGroupMint, TAccountSystemProgram>, config?: {
|
|
130
|
+
programAddress?: TProgramAddress;
|
|
131
|
+
}): Promise<InitializeInstruction<TProgramAddress, TAccountAuthority, TAccountRegistryConfig, TAccountGroupMint, TAccountSystemProgram>>;
|
|
132
|
+
type InitializeInput<TAccountAuthority extends string = string, TAccountRegistryConfig extends string = string, TAccountGroupMint extends string = string, TAccountSystemProgram extends string = string> = {
|
|
133
|
+
/** Initial registry authority (will be multisig in production) */
|
|
134
|
+
authority: TransactionSigner<TAccountAuthority>;
|
|
135
|
+
/** Registry configuration PDA */
|
|
136
|
+
registryConfig: Address$1<TAccountRegistryConfig>;
|
|
137
|
+
/** TokenGroup mint - created and initialized by client, then finalized here */
|
|
138
|
+
groupMint: Address$1<TAccountGroupMint>;
|
|
139
|
+
systemProgram?: Address$1<TAccountSystemProgram>;
|
|
140
|
+
};
|
|
141
|
+
declare function getInitializeInstruction<TAccountAuthority extends string, TAccountRegistryConfig extends string, TAccountGroupMint extends string, TAccountSystemProgram extends string, TProgramAddress extends Address$1 = typeof SATI_REGISTRY_PROGRAM_ADDRESS>(input: InitializeInput<TAccountAuthority, TAccountRegistryConfig, TAccountGroupMint, TAccountSystemProgram>, config?: {
|
|
142
|
+
programAddress?: TProgramAddress;
|
|
143
|
+
}): InitializeInstruction<TProgramAddress, TAccountAuthority, TAccountRegistryConfig, TAccountGroupMint, TAccountSystemProgram>;
|
|
144
|
+
type ParsedInitializeInstruction<TProgram extends string = typeof SATI_REGISTRY_PROGRAM_ADDRESS, TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[]> = {
|
|
145
|
+
programAddress: Address$1<TProgram>;
|
|
146
|
+
accounts: {
|
|
147
|
+
/** Initial registry authority (will be multisig in production) */
|
|
148
|
+
authority: TAccountMetas[0];
|
|
149
|
+
/** Registry configuration PDA */
|
|
150
|
+
registryConfig: TAccountMetas[1];
|
|
151
|
+
/** TokenGroup mint - created and initialized by client, then finalized here */
|
|
152
|
+
groupMint: TAccountMetas[2];
|
|
153
|
+
systemProgram: TAccountMetas[3];
|
|
154
|
+
};
|
|
155
|
+
data: InitializeInstructionData;
|
|
156
|
+
};
|
|
157
|
+
declare function parseInitializeInstruction<TProgram extends string, TAccountMetas extends readonly AccountMeta[]>(instruction: Instruction<TProgram> & InstructionWithAccounts<TAccountMetas> & InstructionWithData<ReadonlyUint8Array>): ParsedInitializeInstruction<TProgram, TAccountMetas>;
|
|
158
|
+
//#endregion
|
|
159
|
+
//#region src/generated/types/agentRegistered.d.ts
|
|
160
|
+
type AgentRegistered = {
|
|
161
|
+
mint: Address$1;
|
|
162
|
+
owner: Address$1;
|
|
163
|
+
memberNumber: bigint;
|
|
164
|
+
name: string;
|
|
165
|
+
uri: string;
|
|
166
|
+
nonTransferable: boolean;
|
|
167
|
+
};
|
|
168
|
+
type AgentRegisteredArgs = {
|
|
169
|
+
mint: Address$1;
|
|
170
|
+
owner: Address$1;
|
|
171
|
+
memberNumber: number | bigint;
|
|
172
|
+
name: string;
|
|
173
|
+
uri: string;
|
|
174
|
+
nonTransferable: boolean;
|
|
175
|
+
};
|
|
176
|
+
declare function getAgentRegisteredEncoder(): Encoder<AgentRegisteredArgs>;
|
|
177
|
+
declare function getAgentRegisteredDecoder(): Decoder<AgentRegistered>;
|
|
178
|
+
declare function getAgentRegisteredCodec(): Codec<AgentRegisteredArgs, AgentRegistered>;
|
|
179
|
+
//#endregion
|
|
180
|
+
//#region src/generated/types/metadataEntry.d.ts
|
|
181
|
+
/**
|
|
182
|
+
* Metadata key-value pair for agent registration
|
|
183
|
+
* Used as instruction argument (Anchor-compatible)
|
|
184
|
+
*/
|
|
185
|
+
type MetadataEntry = {
|
|
186
|
+
key: string;
|
|
187
|
+
value: string;
|
|
188
|
+
};
|
|
189
|
+
type MetadataEntryArgs = MetadataEntry;
|
|
190
|
+
declare function getMetadataEntryEncoder(): Encoder<MetadataEntryArgs>;
|
|
191
|
+
declare function getMetadataEntryDecoder(): Decoder<MetadataEntry>;
|
|
192
|
+
declare function getMetadataEntryCodec(): Codec<MetadataEntryArgs, MetadataEntry>;
|
|
193
|
+
//#endregion
|
|
194
|
+
//#region src/generated/types/registryAuthorityUpdated.d.ts
|
|
195
|
+
type RegistryAuthorityUpdated = {
|
|
196
|
+
oldAuthority: Address$1;
|
|
197
|
+
newAuthority: Option<Address$1>;
|
|
198
|
+
};
|
|
199
|
+
type RegistryAuthorityUpdatedArgs = {
|
|
200
|
+
oldAuthority: Address$1;
|
|
201
|
+
newAuthority: OptionOrNullable<Address$1>;
|
|
202
|
+
};
|
|
203
|
+
declare function getRegistryAuthorityUpdatedEncoder(): Encoder<RegistryAuthorityUpdatedArgs>;
|
|
204
|
+
declare function getRegistryAuthorityUpdatedDecoder(): Decoder<RegistryAuthorityUpdated>;
|
|
205
|
+
declare function getRegistryAuthorityUpdatedCodec(): Codec<RegistryAuthorityUpdatedArgs, RegistryAuthorityUpdated>;
|
|
206
|
+
//#endregion
|
|
207
|
+
//#region src/generated/types/registryInitialized.d.ts
|
|
208
|
+
type RegistryInitialized = {
|
|
209
|
+
authority: Address$1;
|
|
210
|
+
groupMint: Address$1;
|
|
211
|
+
};
|
|
212
|
+
type RegistryInitializedArgs = RegistryInitialized;
|
|
213
|
+
declare function getRegistryInitializedEncoder(): FixedSizeEncoder<RegistryInitializedArgs>;
|
|
214
|
+
declare function getRegistryInitializedDecoder(): FixedSizeDecoder<RegistryInitialized>;
|
|
215
|
+
declare function getRegistryInitializedCodec(): FixedSizeCodec<RegistryInitializedArgs, RegistryInitialized>;
|
|
216
|
+
//#endregion
|
|
217
|
+
//#region src/generated/instructions/registerAgent.d.ts
|
|
218
|
+
declare const REGISTER_AGENT_DISCRIMINATOR: Uint8Array<ArrayBuffer>;
|
|
219
|
+
declare function getRegisterAgentDiscriminatorBytes(): ReadonlyUint8Array;
|
|
220
|
+
type RegisterAgentInstruction<TProgram extends string = typeof SATI_REGISTRY_PROGRAM_ADDRESS, TAccountPayer extends string | AccountMeta<string> = string, TAccountOwner extends string | AccountMeta<string> = string, TAccountRegistryConfig extends string | AccountMeta<string> = string, TAccountGroupMint extends string | AccountMeta<string> = string, TAccountAgentMint extends string | AccountMeta<string> = string, TAccountAgentTokenAccount extends string | AccountMeta<string> = string, TAccountToken2022Program extends string | AccountMeta<string> = "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb", TAccountAssociatedTokenProgram extends string | AccountMeta<string> = "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL", TAccountSystemProgram extends string | AccountMeta<string> = "11111111111111111111111111111111", TRemainingAccounts extends readonly AccountMeta<string>[] = []> = Instruction<TProgram> & InstructionWithData<ReadonlyUint8Array> & InstructionWithAccounts<[TAccountPayer extends string ? WritableSignerAccount<TAccountPayer> & AccountSignerMeta<TAccountPayer> : TAccountPayer, TAccountOwner extends string ? ReadonlyAccount<TAccountOwner> : TAccountOwner, TAccountRegistryConfig extends string ? WritableAccount<TAccountRegistryConfig> : TAccountRegistryConfig, TAccountGroupMint extends string ? WritableAccount<TAccountGroupMint> : TAccountGroupMint, TAccountAgentMint extends string ? WritableSignerAccount<TAccountAgentMint> & AccountSignerMeta<TAccountAgentMint> : TAccountAgentMint, TAccountAgentTokenAccount extends string ? WritableAccount<TAccountAgentTokenAccount> : TAccountAgentTokenAccount, TAccountToken2022Program extends string ? ReadonlyAccount<TAccountToken2022Program> : TAccountToken2022Program, TAccountAssociatedTokenProgram extends string ? ReadonlyAccount<TAccountAssociatedTokenProgram> : TAccountAssociatedTokenProgram, TAccountSystemProgram extends string ? ReadonlyAccount<TAccountSystemProgram> : TAccountSystemProgram, ...TRemainingAccounts]>;
|
|
221
|
+
type RegisterAgentInstructionData = {
|
|
222
|
+
discriminator: ReadonlyUint8Array;
|
|
223
|
+
name: string;
|
|
224
|
+
symbol: string;
|
|
225
|
+
uri: string;
|
|
226
|
+
additionalMetadata: Option<Array<MetadataEntry>>;
|
|
227
|
+
nonTransferable: boolean;
|
|
228
|
+
};
|
|
229
|
+
type RegisterAgentInstructionDataArgs = {
|
|
230
|
+
name: string;
|
|
231
|
+
symbol: string;
|
|
232
|
+
uri: string;
|
|
233
|
+
additionalMetadata: OptionOrNullable<Array<MetadataEntryArgs>>;
|
|
234
|
+
nonTransferable: boolean;
|
|
235
|
+
};
|
|
236
|
+
declare function getRegisterAgentInstructionDataEncoder(): Encoder<RegisterAgentInstructionDataArgs>;
|
|
237
|
+
declare function getRegisterAgentInstructionDataDecoder(): Decoder<RegisterAgentInstructionData>;
|
|
238
|
+
declare function getRegisterAgentInstructionDataCodec(): Codec<RegisterAgentInstructionDataArgs, RegisterAgentInstructionData>;
|
|
239
|
+
type RegisterAgentAsyncInput<TAccountPayer extends string = string, TAccountOwner extends string = string, TAccountRegistryConfig extends string = string, TAccountGroupMint extends string = string, TAccountAgentMint extends string = string, TAccountAgentTokenAccount extends string = string, TAccountToken2022Program extends string = string, TAccountAssociatedTokenProgram extends string = string, TAccountSystemProgram extends string = string> = {
|
|
240
|
+
/** Pays for account creation */
|
|
241
|
+
payer: TransactionSigner<TAccountPayer>;
|
|
242
|
+
/** Agent NFT owner (default: payer) */
|
|
243
|
+
owner: Address$1<TAccountOwner>;
|
|
244
|
+
/** Registry configuration */
|
|
245
|
+
registryConfig?: Address$1<TAccountRegistryConfig>;
|
|
246
|
+
/** TokenGroup mint (for membership) */
|
|
247
|
+
groupMint: Address$1<TAccountGroupMint>;
|
|
248
|
+
/** New agent NFT mint (randomly generated keypair) */
|
|
249
|
+
agentMint: TransactionSigner<TAccountAgentMint>;
|
|
250
|
+
/** Owner's ATA for agent NFT */
|
|
251
|
+
agentTokenAccount: Address$1<TAccountAgentTokenAccount>;
|
|
252
|
+
token2022Program?: Address$1<TAccountToken2022Program>;
|
|
253
|
+
associatedTokenProgram?: Address$1<TAccountAssociatedTokenProgram>;
|
|
254
|
+
systemProgram?: Address$1<TAccountSystemProgram>;
|
|
255
|
+
name: RegisterAgentInstructionDataArgs["name"];
|
|
256
|
+
symbol: RegisterAgentInstructionDataArgs["symbol"];
|
|
257
|
+
uri: RegisterAgentInstructionDataArgs["uri"];
|
|
258
|
+
additionalMetadata: RegisterAgentInstructionDataArgs["additionalMetadata"];
|
|
259
|
+
nonTransferable: RegisterAgentInstructionDataArgs["nonTransferable"];
|
|
260
|
+
};
|
|
261
|
+
declare function getRegisterAgentInstructionAsync<TAccountPayer extends string, TAccountOwner extends string, TAccountRegistryConfig extends string, TAccountGroupMint extends string, TAccountAgentMint extends string, TAccountAgentTokenAccount extends string, TAccountToken2022Program extends string, TAccountAssociatedTokenProgram extends string, TAccountSystemProgram extends string, TProgramAddress extends Address$1 = typeof SATI_REGISTRY_PROGRAM_ADDRESS>(input: RegisterAgentAsyncInput<TAccountPayer, TAccountOwner, TAccountRegistryConfig, TAccountGroupMint, TAccountAgentMint, TAccountAgentTokenAccount, TAccountToken2022Program, TAccountAssociatedTokenProgram, TAccountSystemProgram>, config?: {
|
|
262
|
+
programAddress?: TProgramAddress;
|
|
263
|
+
}): Promise<RegisterAgentInstruction<TProgramAddress, TAccountPayer, TAccountOwner, TAccountRegistryConfig, TAccountGroupMint, TAccountAgentMint, TAccountAgentTokenAccount, TAccountToken2022Program, TAccountAssociatedTokenProgram, TAccountSystemProgram>>;
|
|
264
|
+
type RegisterAgentInput<TAccountPayer extends string = string, TAccountOwner extends string = string, TAccountRegistryConfig extends string = string, TAccountGroupMint extends string = string, TAccountAgentMint extends string = string, TAccountAgentTokenAccount extends string = string, TAccountToken2022Program extends string = string, TAccountAssociatedTokenProgram extends string = string, TAccountSystemProgram extends string = string> = {
|
|
265
|
+
/** Pays for account creation */
|
|
266
|
+
payer: TransactionSigner<TAccountPayer>;
|
|
267
|
+
/** Agent NFT owner (default: payer) */
|
|
268
|
+
owner: Address$1<TAccountOwner>;
|
|
269
|
+
/** Registry configuration */
|
|
270
|
+
registryConfig: Address$1<TAccountRegistryConfig>;
|
|
271
|
+
/** TokenGroup mint (for membership) */
|
|
272
|
+
groupMint: Address$1<TAccountGroupMint>;
|
|
273
|
+
/** New agent NFT mint (randomly generated keypair) */
|
|
274
|
+
agentMint: TransactionSigner<TAccountAgentMint>;
|
|
275
|
+
/** Owner's ATA for agent NFT */
|
|
276
|
+
agentTokenAccount: Address$1<TAccountAgentTokenAccount>;
|
|
277
|
+
token2022Program?: Address$1<TAccountToken2022Program>;
|
|
278
|
+
associatedTokenProgram?: Address$1<TAccountAssociatedTokenProgram>;
|
|
279
|
+
systemProgram?: Address$1<TAccountSystemProgram>;
|
|
280
|
+
name: RegisterAgentInstructionDataArgs["name"];
|
|
281
|
+
symbol: RegisterAgentInstructionDataArgs["symbol"];
|
|
282
|
+
uri: RegisterAgentInstructionDataArgs["uri"];
|
|
283
|
+
additionalMetadata: RegisterAgentInstructionDataArgs["additionalMetadata"];
|
|
284
|
+
nonTransferable: RegisterAgentInstructionDataArgs["nonTransferable"];
|
|
285
|
+
};
|
|
286
|
+
declare function getRegisterAgentInstruction<TAccountPayer extends string, TAccountOwner extends string, TAccountRegistryConfig extends string, TAccountGroupMint extends string, TAccountAgentMint extends string, TAccountAgentTokenAccount extends string, TAccountToken2022Program extends string, TAccountAssociatedTokenProgram extends string, TAccountSystemProgram extends string, TProgramAddress extends Address$1 = typeof SATI_REGISTRY_PROGRAM_ADDRESS>(input: RegisterAgentInput<TAccountPayer, TAccountOwner, TAccountRegistryConfig, TAccountGroupMint, TAccountAgentMint, TAccountAgentTokenAccount, TAccountToken2022Program, TAccountAssociatedTokenProgram, TAccountSystemProgram>, config?: {
|
|
287
|
+
programAddress?: TProgramAddress;
|
|
288
|
+
}): RegisterAgentInstruction<TProgramAddress, TAccountPayer, TAccountOwner, TAccountRegistryConfig, TAccountGroupMint, TAccountAgentMint, TAccountAgentTokenAccount, TAccountToken2022Program, TAccountAssociatedTokenProgram, TAccountSystemProgram>;
|
|
289
|
+
type ParsedRegisterAgentInstruction<TProgram extends string = typeof SATI_REGISTRY_PROGRAM_ADDRESS, TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[]> = {
|
|
290
|
+
programAddress: Address$1<TProgram>;
|
|
291
|
+
accounts: {
|
|
292
|
+
/** Pays for account creation */
|
|
293
|
+
payer: TAccountMetas[0];
|
|
294
|
+
/** Agent NFT owner (default: payer) */
|
|
295
|
+
owner: TAccountMetas[1];
|
|
296
|
+
/** Registry configuration */
|
|
297
|
+
registryConfig: TAccountMetas[2];
|
|
298
|
+
/** TokenGroup mint (for membership) */
|
|
299
|
+
groupMint: TAccountMetas[3];
|
|
300
|
+
/** New agent NFT mint (randomly generated keypair) */
|
|
301
|
+
agentMint: TAccountMetas[4];
|
|
302
|
+
/** Owner's ATA for agent NFT */
|
|
303
|
+
agentTokenAccount: TAccountMetas[5];
|
|
304
|
+
token2022Program: TAccountMetas[6];
|
|
305
|
+
associatedTokenProgram: TAccountMetas[7];
|
|
306
|
+
systemProgram: TAccountMetas[8];
|
|
307
|
+
};
|
|
308
|
+
data: RegisterAgentInstructionData;
|
|
309
|
+
};
|
|
310
|
+
declare function parseRegisterAgentInstruction<TProgram extends string, TAccountMetas extends readonly AccountMeta[]>(instruction: Instruction<TProgram> & InstructionWithAccounts<TAccountMetas> & InstructionWithData<ReadonlyUint8Array>): ParsedRegisterAgentInstruction<TProgram, TAccountMetas>;
|
|
311
|
+
//#endregion
|
|
312
|
+
//#region src/generated/instructions/updateRegistryAuthority.d.ts
|
|
313
|
+
declare const UPDATE_REGISTRY_AUTHORITY_DISCRIMINATOR: Uint8Array<ArrayBuffer>;
|
|
314
|
+
declare function getUpdateRegistryAuthorityDiscriminatorBytes(): ReadonlyUint8Array;
|
|
315
|
+
type UpdateRegistryAuthorityInstruction<TProgram extends string = typeof SATI_REGISTRY_PROGRAM_ADDRESS, TAccountAuthority extends string | AccountMeta<string> = string, TAccountRegistryConfig extends string | AccountMeta<string> = string, TRemainingAccounts extends readonly AccountMeta<string>[] = []> = Instruction<TProgram> & InstructionWithData<ReadonlyUint8Array> & InstructionWithAccounts<[TAccountAuthority extends string ? ReadonlySignerAccount<TAccountAuthority> & AccountSignerMeta<TAccountAuthority> : TAccountAuthority, TAccountRegistryConfig extends string ? WritableAccount<TAccountRegistryConfig> : TAccountRegistryConfig, ...TRemainingAccounts]>;
|
|
316
|
+
type UpdateRegistryAuthorityInstructionData = {
|
|
317
|
+
discriminator: ReadonlyUint8Array;
|
|
318
|
+
newAuthority: Option<Address$1>;
|
|
319
|
+
};
|
|
320
|
+
type UpdateRegistryAuthorityInstructionDataArgs = {
|
|
321
|
+
newAuthority: OptionOrNullable<Address$1>;
|
|
322
|
+
};
|
|
323
|
+
declare function getUpdateRegistryAuthorityInstructionDataEncoder(): Encoder<UpdateRegistryAuthorityInstructionDataArgs>;
|
|
324
|
+
declare function getUpdateRegistryAuthorityInstructionDataDecoder(): Decoder<UpdateRegistryAuthorityInstructionData>;
|
|
325
|
+
declare function getUpdateRegistryAuthorityInstructionDataCodec(): Codec<UpdateRegistryAuthorityInstructionDataArgs, UpdateRegistryAuthorityInstructionData>;
|
|
326
|
+
type UpdateRegistryAuthorityAsyncInput<TAccountAuthority extends string = string, TAccountRegistryConfig extends string = string> = {
|
|
327
|
+
/** Current authority (must sign) */
|
|
328
|
+
authority: TransactionSigner<TAccountAuthority>;
|
|
329
|
+
/** Registry configuration */
|
|
330
|
+
registryConfig?: Address$1<TAccountRegistryConfig>;
|
|
331
|
+
newAuthority: UpdateRegistryAuthorityInstructionDataArgs["newAuthority"];
|
|
332
|
+
};
|
|
333
|
+
declare function getUpdateRegistryAuthorityInstructionAsync<TAccountAuthority extends string, TAccountRegistryConfig extends string, TProgramAddress extends Address$1 = typeof SATI_REGISTRY_PROGRAM_ADDRESS>(input: UpdateRegistryAuthorityAsyncInput<TAccountAuthority, TAccountRegistryConfig>, config?: {
|
|
334
|
+
programAddress?: TProgramAddress;
|
|
335
|
+
}): Promise<UpdateRegistryAuthorityInstruction<TProgramAddress, TAccountAuthority, TAccountRegistryConfig>>;
|
|
336
|
+
type UpdateRegistryAuthorityInput<TAccountAuthority extends string = string, TAccountRegistryConfig extends string = string> = {
|
|
337
|
+
/** Current authority (must sign) */
|
|
338
|
+
authority: TransactionSigner<TAccountAuthority>;
|
|
339
|
+
/** Registry configuration */
|
|
340
|
+
registryConfig: Address$1<TAccountRegistryConfig>;
|
|
341
|
+
newAuthority: UpdateRegistryAuthorityInstructionDataArgs["newAuthority"];
|
|
342
|
+
};
|
|
343
|
+
declare function getUpdateRegistryAuthorityInstruction<TAccountAuthority extends string, TAccountRegistryConfig extends string, TProgramAddress extends Address$1 = typeof SATI_REGISTRY_PROGRAM_ADDRESS>(input: UpdateRegistryAuthorityInput<TAccountAuthority, TAccountRegistryConfig>, config?: {
|
|
344
|
+
programAddress?: TProgramAddress;
|
|
345
|
+
}): UpdateRegistryAuthorityInstruction<TProgramAddress, TAccountAuthority, TAccountRegistryConfig>;
|
|
346
|
+
type ParsedUpdateRegistryAuthorityInstruction<TProgram extends string = typeof SATI_REGISTRY_PROGRAM_ADDRESS, TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[]> = {
|
|
347
|
+
programAddress: Address$1<TProgram>;
|
|
348
|
+
accounts: {
|
|
349
|
+
/** Current authority (must sign) */
|
|
350
|
+
authority: TAccountMetas[0];
|
|
351
|
+
/** Registry configuration */
|
|
352
|
+
registryConfig: TAccountMetas[1];
|
|
353
|
+
};
|
|
354
|
+
data: UpdateRegistryAuthorityInstructionData;
|
|
355
|
+
};
|
|
356
|
+
declare function parseUpdateRegistryAuthorityInstruction<TProgram extends string, TAccountMetas extends readonly AccountMeta[]>(instruction: Instruction<TProgram> & InstructionWithAccounts<TAccountMetas> & InstructionWithData<ReadonlyUint8Array>): ParsedUpdateRegistryAuthorityInstruction<TProgram, TAccountMetas>;
|
|
357
|
+
//#endregion
|
|
358
|
+
//#region src/schemas.d.ts
|
|
359
|
+
/**
|
|
360
|
+
* SATI SAS Schema Definitions
|
|
361
|
+
*
|
|
362
|
+
* Schema definitions for Solana Attestation Service (SAS) attestations.
|
|
363
|
+
* These schemas define the data structures for SATI reputation and validation.
|
|
364
|
+
*/
|
|
365
|
+
/**
|
|
366
|
+
* SAS Layout Types
|
|
367
|
+
*
|
|
368
|
+
* Type-safe enum for schema field layout definitions.
|
|
369
|
+
* These map to the SAS program's internal type codes.
|
|
370
|
+
*
|
|
371
|
+
* @see https://github.com/solana-foundation/solana-attestation-service
|
|
372
|
+
*/
|
|
373
|
+
declare enum SASLayoutType {
|
|
374
|
+
/** Unsigned 8-bit integer (0-255) */
|
|
375
|
+
U8 = 0,
|
|
376
|
+
/** Unsigned 16-bit integer (0-65535) */
|
|
377
|
+
U16 = 1,
|
|
378
|
+
/** Unsigned 32-bit integer */
|
|
379
|
+
U32 = 2,
|
|
380
|
+
/** Unsigned 64-bit integer */
|
|
381
|
+
U64 = 3,
|
|
382
|
+
/** Unsigned 128-bit integer */
|
|
383
|
+
U128 = 4,
|
|
384
|
+
/** Signed 8-bit integer */
|
|
385
|
+
I8 = 5,
|
|
386
|
+
/** Signed 16-bit integer */
|
|
387
|
+
I16 = 6,
|
|
388
|
+
/** Signed 32-bit integer */
|
|
389
|
+
I32 = 7,
|
|
390
|
+
/** Signed 64-bit integer (for timestamps) */
|
|
391
|
+
I64 = 8,
|
|
392
|
+
/** Signed 128-bit integer */
|
|
393
|
+
I128 = 9,
|
|
394
|
+
/** Boolean */
|
|
395
|
+
Bool = 10,
|
|
396
|
+
/** Single character */
|
|
397
|
+
Char = 11,
|
|
398
|
+
/** UTF-8 string with 4-byte length prefix */
|
|
399
|
+
String = 12,
|
|
400
|
+
/** Byte array with 4-byte length prefix */
|
|
401
|
+
VecU8 = 13,
|
|
402
|
+
}
|
|
403
|
+
/**
|
|
404
|
+
* SAS Schema definition structure
|
|
405
|
+
*/
|
|
406
|
+
interface SASSchema {
|
|
407
|
+
name: string;
|
|
408
|
+
version: number;
|
|
409
|
+
description: string;
|
|
410
|
+
layout: SASLayoutType[];
|
|
411
|
+
fieldNames: string[];
|
|
412
|
+
}
|
|
413
|
+
/**
|
|
414
|
+
* FeedbackAuth Schema - Authorization for client to submit feedback
|
|
415
|
+
*
|
|
416
|
+
* Replaces ERC-8004's off-chain signature with on-chain attestation.
|
|
417
|
+
*
|
|
418
|
+
* Attestation configuration:
|
|
419
|
+
* - credential = agent NFT mint
|
|
420
|
+
* - subject = client pubkey (authorized reviewer)
|
|
421
|
+
* - issuer = agent owner
|
|
422
|
+
* - nonce = hash(agentMint, clientPubkey)
|
|
423
|
+
*/
|
|
424
|
+
declare const FEEDBACK_AUTH_SCHEMA: SASSchema;
|
|
425
|
+
/**
|
|
426
|
+
* Feedback Schema - Client feedback for agent (ERC-8004 compatible)
|
|
427
|
+
*
|
|
428
|
+
* Attestation configuration:
|
|
429
|
+
* - credential = agent NFT mint
|
|
430
|
+
* - issuer = client (feedback giver)
|
|
431
|
+
* - nonce = hash(agent_mint, client_pubkey, timestamp)
|
|
432
|
+
*/
|
|
433
|
+
declare const FEEDBACK_SCHEMA: SASSchema;
|
|
434
|
+
/**
|
|
435
|
+
* FeedbackResponse Schema - Response to feedback (ERC-8004 appendResponse)
|
|
436
|
+
*
|
|
437
|
+
* Attestation configuration:
|
|
438
|
+
* - credential = agent NFT mint
|
|
439
|
+
* - issuer = responder (agent owner, auditor, etc.)
|
|
440
|
+
* - nonce = hash(feedback_id, responder_pubkey, index)
|
|
441
|
+
*/
|
|
442
|
+
declare const FEEDBACK_RESPONSE_SCHEMA: SASSchema;
|
|
443
|
+
/**
|
|
444
|
+
* ValidationRequest Schema - Agent requests work validation
|
|
445
|
+
*
|
|
446
|
+
* Attestation configuration:
|
|
447
|
+
* - credential = agent NFT mint
|
|
448
|
+
* - subject = validator pubkey
|
|
449
|
+
* - issuer = agent owner
|
|
450
|
+
* - nonce = hash(agent_mint, validator_pubkey, user_nonce)
|
|
451
|
+
*/
|
|
452
|
+
declare const VALIDATION_REQUEST_SCHEMA: SASSchema;
|
|
453
|
+
/**
|
|
454
|
+
* ValidationResponse Schema - Validator responds to request
|
|
455
|
+
*
|
|
456
|
+
* Attestation configuration:
|
|
457
|
+
* - credential = agent NFT mint (from request)
|
|
458
|
+
* - issuer = validator
|
|
459
|
+
* - nonce = hash(request_id, response_index)
|
|
460
|
+
*/
|
|
461
|
+
declare const VALIDATION_RESPONSE_SCHEMA: SASSchema;
|
|
462
|
+
/**
|
|
463
|
+
* Certification Schema - Immutable certification for agent
|
|
464
|
+
*
|
|
465
|
+
* For permanent, unmodifiable records (security audits, compliance
|
|
466
|
+
* certifications, credential attestations). SAS attestations are
|
|
467
|
+
* immutable by design - content cannot be modified after creation.
|
|
468
|
+
*
|
|
469
|
+
* Attestation configuration:
|
|
470
|
+
* - credential = agent NFT mint
|
|
471
|
+
* - issuer = certifier (e.g., audit firm)
|
|
472
|
+
* - nonce = hash(agent_mint, certifier_pubkey, cert_type, issued_at)
|
|
473
|
+
*/
|
|
474
|
+
declare const CERTIFICATION_SCHEMA: SASSchema;
|
|
475
|
+
/**
|
|
476
|
+
* All SATI SAS schemas
|
|
477
|
+
*/
|
|
478
|
+
declare const SATI_SCHEMAS: {
|
|
479
|
+
readonly feedbackAuth: SASSchema;
|
|
480
|
+
readonly feedback: SASSchema;
|
|
481
|
+
readonly feedbackResponse: SASSchema;
|
|
482
|
+
readonly validationRequest: SASSchema;
|
|
483
|
+
readonly validationResponse: SASSchema;
|
|
484
|
+
readonly certification: SASSchema;
|
|
485
|
+
};
|
|
486
|
+
/**
|
|
487
|
+
* Schema names for lookup
|
|
488
|
+
*/
|
|
489
|
+
declare const SCHEMA_NAMES: {
|
|
490
|
+
readonly FEEDBACK_AUTH: "SATIFeedbackAuth";
|
|
491
|
+
readonly FEEDBACK: "SATIFeedback";
|
|
492
|
+
readonly FEEDBACK_RESPONSE: "SATIFeedbackResponse";
|
|
493
|
+
readonly VALIDATION_REQUEST: "SATIValidationRequest";
|
|
494
|
+
readonly VALIDATION_RESPONSE: "SATIValidationResponse";
|
|
495
|
+
readonly CERTIFICATION: "SATICertification";
|
|
496
|
+
};
|
|
497
|
+
//#endregion
|
|
498
|
+
//#region src/types.d.ts
|
|
499
|
+
/**
|
|
500
|
+
* Agent identity information retrieved from Token-2022 NFT
|
|
501
|
+
*/
|
|
502
|
+
interface AgentIdentity {
|
|
503
|
+
/** Agent NFT mint address */
|
|
504
|
+
mint: Address$1;
|
|
505
|
+
/** Current owner of the agent NFT */
|
|
506
|
+
owner: Address$1;
|
|
507
|
+
/** Agent name from metadata */
|
|
508
|
+
name: string;
|
|
509
|
+
/** Agent symbol from metadata */
|
|
510
|
+
symbol: string;
|
|
511
|
+
/** Registration file URI (IPFS/HTTP) */
|
|
512
|
+
uri: string;
|
|
513
|
+
/** Token group member number */
|
|
514
|
+
memberNumber: bigint;
|
|
515
|
+
/** Additional metadata key-value pairs */
|
|
516
|
+
additionalMetadata: Record<string, string>;
|
|
517
|
+
/** Whether the agent is non-transferable (soulbound) */
|
|
518
|
+
nonTransferable: boolean;
|
|
519
|
+
}
|
|
520
|
+
/**
|
|
521
|
+
* Feedback attestation data from SAS
|
|
522
|
+
*/
|
|
523
|
+
interface Feedback {
|
|
524
|
+
/** Feedback attestation address */
|
|
525
|
+
attestation: Address$1;
|
|
526
|
+
/** Agent mint receiving feedback */
|
|
527
|
+
agentMint: Address$1;
|
|
528
|
+
/** Feedback score (0-100) */
|
|
529
|
+
score: number;
|
|
530
|
+
/** Optional categorization tags */
|
|
531
|
+
tag1?: string;
|
|
532
|
+
tag2?: string;
|
|
533
|
+
/** URI to off-chain feedback details */
|
|
534
|
+
fileUri?: string;
|
|
535
|
+
/** SHA-256 hash of feedback file */
|
|
536
|
+
fileHash?: Uint8Array;
|
|
537
|
+
/** x402 payment proof reference */
|
|
538
|
+
paymentProof?: string;
|
|
539
|
+
/** Feedback giver's address */
|
|
540
|
+
issuer: Address$1;
|
|
541
|
+
/** Attestation expiry timestamp (0 = no expiry) */
|
|
542
|
+
expiry: number;
|
|
543
|
+
/** Whether attestation is revoked */
|
|
544
|
+
revoked: boolean;
|
|
545
|
+
}
|
|
546
|
+
/**
|
|
547
|
+
* Feedback authorization attestation data from SAS
|
|
548
|
+
*/
|
|
549
|
+
interface FeedbackAuthorization {
|
|
550
|
+
/** Authorization attestation address */
|
|
551
|
+
attestation: Address$1;
|
|
552
|
+
/** Agent mint that authorized feedback */
|
|
553
|
+
agentMint: Address$1;
|
|
554
|
+
/** Authorized client address */
|
|
555
|
+
client: Address$1;
|
|
556
|
+
/** Maximum feedback index allowed (ERC-8004 indexLimit) */
|
|
557
|
+
indexLimit: number;
|
|
558
|
+
/** Expiration timestamp (0 = no expiry) */
|
|
559
|
+
expiry: number;
|
|
560
|
+
/** Whether authorization is revoked */
|
|
561
|
+
revoked: boolean;
|
|
562
|
+
}
|
|
563
|
+
/**
|
|
564
|
+
* Validation request attestation data from SAS
|
|
565
|
+
*/
|
|
566
|
+
interface ValidationRequest {
|
|
567
|
+
/** Request attestation address */
|
|
568
|
+
attestation: Address$1;
|
|
569
|
+
/** Agent mint requesting validation */
|
|
570
|
+
agentMint: Address$1;
|
|
571
|
+
/** Validator address */
|
|
572
|
+
validator: Address$1;
|
|
573
|
+
/** Validation method ("tee", "zkml", "restake") */
|
|
574
|
+
methodId: string;
|
|
575
|
+
/** URI to validation request data */
|
|
576
|
+
requestUri: string;
|
|
577
|
+
/** SHA-256 hash of request content */
|
|
578
|
+
requestHash?: Uint8Array;
|
|
579
|
+
/** Request timestamp */
|
|
580
|
+
timestamp: number;
|
|
581
|
+
}
|
|
582
|
+
/**
|
|
583
|
+
* Validation status and response
|
|
584
|
+
*/
|
|
585
|
+
interface ValidationStatus {
|
|
586
|
+
/** Request attestation address */
|
|
587
|
+
requestAttestation: Address$1;
|
|
588
|
+
/** Response attestation address (if responded) */
|
|
589
|
+
responseAttestation?: Address$1;
|
|
590
|
+
/** Validation score (0-100, where 0=fail, 100=pass) */
|
|
591
|
+
response?: number;
|
|
592
|
+
/** URI to validation evidence */
|
|
593
|
+
responseUri?: string;
|
|
594
|
+
/** SHA-256 hash of response content */
|
|
595
|
+
responseHash?: Uint8Array;
|
|
596
|
+
/** Optional categorization tag */
|
|
597
|
+
tag?: string;
|
|
598
|
+
/** Validator address */
|
|
599
|
+
validator: Address$1;
|
|
600
|
+
/** Whether validation is complete */
|
|
601
|
+
completed: boolean;
|
|
602
|
+
/** Response attestation expiry timestamp */
|
|
603
|
+
responseExpiry?: number;
|
|
604
|
+
}
|
|
605
|
+
/**
|
|
606
|
+
* Registration result from registerAgent
|
|
607
|
+
*/
|
|
608
|
+
interface RegisterAgentResult {
|
|
609
|
+
/** Agent NFT mint address */
|
|
610
|
+
mint: Address$1;
|
|
611
|
+
/** Token group member number */
|
|
612
|
+
memberNumber: bigint;
|
|
613
|
+
/** Transaction signature */
|
|
614
|
+
signature: string;
|
|
615
|
+
}
|
|
616
|
+
/**
|
|
617
|
+
* Attestation result from SAS operations
|
|
618
|
+
*/
|
|
619
|
+
interface AttestationResult {
|
|
620
|
+
/** Attestation account address */
|
|
621
|
+
attestation: Address$1;
|
|
622
|
+
/** Transaction signature */
|
|
623
|
+
signature: string;
|
|
624
|
+
}
|
|
625
|
+
/**
|
|
626
|
+
* SATI client configuration options
|
|
627
|
+
*/
|
|
628
|
+
interface SATIClientOptions {
|
|
629
|
+
/** Network to connect to */
|
|
630
|
+
network: "mainnet" | "devnet" | "localnet";
|
|
631
|
+
/** Custom RPC URL (overrides network default) */
|
|
632
|
+
rpcUrl?: string;
|
|
633
|
+
/** Custom WebSocket URL for subscriptions (overrides network default) */
|
|
634
|
+
wsUrl?: string;
|
|
635
|
+
}
|
|
636
|
+
/**
|
|
637
|
+
* SAS configuration with credential and schema addresses
|
|
638
|
+
*/
|
|
639
|
+
interface SATISASConfig {
|
|
640
|
+
/** SATI credential PDA */
|
|
641
|
+
credential: Address$1;
|
|
642
|
+
/** Schema PDAs by name */
|
|
643
|
+
schemas: {
|
|
644
|
+
feedbackAuth: Address$1;
|
|
645
|
+
feedback: Address$1;
|
|
646
|
+
feedbackResponse: Address$1;
|
|
647
|
+
validationRequest: Address$1;
|
|
648
|
+
validationResponse: Address$1;
|
|
649
|
+
certification: Address$1;
|
|
650
|
+
};
|
|
651
|
+
}
|
|
652
|
+
/**
|
|
653
|
+
* Status of a single schema deployment
|
|
654
|
+
*/
|
|
655
|
+
interface SchemaDeploymentStatus {
|
|
656
|
+
/** Schema name (e.g., "SATIFeedback") */
|
|
657
|
+
name: string;
|
|
658
|
+
/** Schema PDA address */
|
|
659
|
+
address: Address$1;
|
|
660
|
+
/** Whether schema existed before this deployment */
|
|
661
|
+
existed: boolean;
|
|
662
|
+
/** Whether schema was deployed in this run */
|
|
663
|
+
deployed: boolean;
|
|
664
|
+
}
|
|
665
|
+
/**
|
|
666
|
+
* Result of SAS schema deployment operation
|
|
667
|
+
*/
|
|
668
|
+
interface SASDeploymentResult {
|
|
669
|
+
/** Whether deployment was successful */
|
|
670
|
+
success: boolean;
|
|
671
|
+
/** Credential deployment status */
|
|
672
|
+
credential: {
|
|
673
|
+
/** Credential PDA address */
|
|
674
|
+
address: Address$1;
|
|
675
|
+
/** Whether credential existed before this deployment */
|
|
676
|
+
existed: boolean;
|
|
677
|
+
/** Whether credential was deployed in this run */
|
|
678
|
+
deployed: boolean;
|
|
679
|
+
};
|
|
680
|
+
/** Schema deployment statuses */
|
|
681
|
+
schemas: SchemaDeploymentStatus[];
|
|
682
|
+
/** Transaction signatures for any deployments */
|
|
683
|
+
signatures: string[];
|
|
684
|
+
/** Full SAS config (usable immediately) */
|
|
685
|
+
config: SATISASConfig;
|
|
686
|
+
}
|
|
687
|
+
/**
|
|
688
|
+
* Persisted deployment configuration (for JSON files)
|
|
689
|
+
*/
|
|
690
|
+
interface DeployedSASConfig {
|
|
691
|
+
/** Network identifier */
|
|
692
|
+
network: "devnet" | "mainnet" | "localnet";
|
|
693
|
+
/** Authority that deployed the schemas */
|
|
694
|
+
authority: Address$1;
|
|
695
|
+
/** Deployment timestamp (ISO string) */
|
|
696
|
+
deployedAt: string;
|
|
697
|
+
/** The SAS configuration */
|
|
698
|
+
config: SATISASConfig;
|
|
699
|
+
}
|
|
700
|
+
//#endregion
|
|
701
|
+
//#region src/sas.d.ts
|
|
702
|
+
/**
|
|
703
|
+
* SATI credential name used for all attestations
|
|
704
|
+
*/
|
|
705
|
+
declare const SATI_CREDENTIAL_NAME = "SATI";
|
|
706
|
+
/**
|
|
707
|
+
* Schema names for SATI attestations
|
|
708
|
+
*/
|
|
709
|
+
declare const SATI_SCHEMA_NAMES: {
|
|
710
|
+
readonly FEEDBACK_AUTH: "SATIFeedbackAuth";
|
|
711
|
+
readonly FEEDBACK: "SATIFeedback";
|
|
712
|
+
readonly FEEDBACK_RESPONSE: "SATIFeedbackResponse";
|
|
713
|
+
readonly VALIDATION_REQUEST: "SATIValidationRequest";
|
|
714
|
+
readonly VALIDATION_RESPONSE: "SATIValidationResponse";
|
|
715
|
+
readonly CERTIFICATION: "SATICertification";
|
|
716
|
+
};
|
|
717
|
+
/**
|
|
718
|
+
* All SATI schemas with their definitions (keyed by schema name constant)
|
|
719
|
+
*/
|
|
720
|
+
declare const SATI_SAS_SCHEMAS: Record<keyof typeof SATI_SCHEMA_NAMES, SASSchema>;
|
|
721
|
+
/**
|
|
722
|
+
* Derive SATI credential PDA
|
|
723
|
+
*
|
|
724
|
+
* @param authority - Credential authority address
|
|
725
|
+
* @returns Credential PDA and bump
|
|
726
|
+
*/
|
|
727
|
+
declare function deriveSatiCredentialPda(authority: Address$1): Promise<readonly [Address$1, number]>;
|
|
728
|
+
/**
|
|
729
|
+
* Derive SATI schema PDA
|
|
730
|
+
*
|
|
731
|
+
* @param credentialPda - SATI credential PDA
|
|
732
|
+
* @param schemaName - Schema name (e.g., "SATIFeedback")
|
|
733
|
+
* @param version - Schema version (default: 1)
|
|
734
|
+
* @returns Schema PDA and bump
|
|
735
|
+
*/
|
|
736
|
+
declare function deriveSatiSchemaPda(credentialPda: Address$1, schemaName: string, version?: number): Promise<readonly [Address$1, number]>;
|
|
737
|
+
/**
|
|
738
|
+
* Derive attestation PDA for a specific schema
|
|
739
|
+
*
|
|
740
|
+
* @param credentialPda - SATI credential PDA
|
|
741
|
+
* @param schemaPda - Schema PDA
|
|
742
|
+
* @param nonce - Unique nonce for this attestation (e.g., hash of agent + client)
|
|
743
|
+
* @returns Attestation PDA and bump
|
|
744
|
+
*/
|
|
745
|
+
declare function deriveSatiAttestationPda(credentialPda: Address$1, schemaPda: Address$1, nonce: Address$1): Promise<readonly [Address$1, number]>;
|
|
746
|
+
/**
|
|
747
|
+
* Get instructions to create SATI credential
|
|
748
|
+
*
|
|
749
|
+
* @param params - Creation parameters
|
|
750
|
+
* @returns Instruction to create credential
|
|
751
|
+
*/
|
|
752
|
+
declare function getCreateSatiCredentialInstruction(params: {
|
|
753
|
+
payer: TransactionSigner;
|
|
754
|
+
authority: TransactionSigner;
|
|
755
|
+
credentialPda: Address$1;
|
|
756
|
+
authorizedSigners: Address$1[];
|
|
757
|
+
}): sas_lib0.CreateCredentialInstruction<Address$1<"22zoJMtdu4tQc2PzL74ZUT7FrwgB1Udec8DdW4yw4BdG">, string, string, string, string, []>;
|
|
758
|
+
/**
|
|
759
|
+
* Get instruction to create a SATI schema
|
|
760
|
+
*
|
|
761
|
+
* @param params - Schema creation parameters
|
|
762
|
+
* @returns Instruction to create schema
|
|
763
|
+
*/
|
|
764
|
+
declare function getCreateSatiSchemaInstruction(params: {
|
|
765
|
+
payer: TransactionSigner;
|
|
766
|
+
authority: TransactionSigner;
|
|
767
|
+
credentialPda: Address$1;
|
|
768
|
+
schemaPda: Address$1;
|
|
769
|
+
schema: SASSchema;
|
|
770
|
+
}): sas_lib0.CreateSchemaInstruction<Address$1<"22zoJMtdu4tQc2PzL74ZUT7FrwgB1Udec8DdW4yw4BdG">, string, string, string, string, string, []>;
|
|
771
|
+
/**
|
|
772
|
+
* Serialize feedback authorization data for attestation
|
|
773
|
+
*
|
|
774
|
+
* @param data - FeedbackAuth data
|
|
775
|
+
* @param schemaData - Schema account data from fetchSchema
|
|
776
|
+
* @returns Serialized data buffer
|
|
777
|
+
*/
|
|
778
|
+
declare function serializeFeedbackAuthData(data: {
|
|
779
|
+
agent_mint: string;
|
|
780
|
+
index_limit: number;
|
|
781
|
+
expiry: number;
|
|
782
|
+
}, schemaData: Awaited<ReturnType<typeof fetchSchema>>["data"]): Uint8Array;
|
|
783
|
+
/**
|
|
784
|
+
* Serialize feedback data for attestation
|
|
785
|
+
*
|
|
786
|
+
* @param data - Feedback data
|
|
787
|
+
* @param schemaData - Schema account data from fetchSchema
|
|
788
|
+
* @returns Serialized data buffer
|
|
789
|
+
*/
|
|
790
|
+
declare function serializeFeedbackData(data: {
|
|
791
|
+
agent_mint: string;
|
|
792
|
+
score: number;
|
|
793
|
+
tag1?: string;
|
|
794
|
+
tag2?: string;
|
|
795
|
+
fileuri?: string;
|
|
796
|
+
filehash?: Uint8Array;
|
|
797
|
+
payment_proof?: string;
|
|
798
|
+
}, schemaData: Awaited<ReturnType<typeof fetchSchema>>["data"]): Uint8Array;
|
|
799
|
+
/**
|
|
800
|
+
* Serialize feedback response data for attestation
|
|
801
|
+
*
|
|
802
|
+
* @param data - FeedbackResponse data
|
|
803
|
+
* @param schemaData - Schema account data from fetchSchema
|
|
804
|
+
* @returns Serialized data buffer
|
|
805
|
+
*/
|
|
806
|
+
declare function serializeFeedbackResponseData(data: {
|
|
807
|
+
feedback_id: string;
|
|
808
|
+
response_uri: string;
|
|
809
|
+
response_hash?: Uint8Array;
|
|
810
|
+
}, schemaData: Awaited<ReturnType<typeof fetchSchema>>["data"]): Uint8Array;
|
|
811
|
+
/**
|
|
812
|
+
* Serialize validation request data for attestation
|
|
813
|
+
*
|
|
814
|
+
* @param data - ValidationRequest data
|
|
815
|
+
* @param schemaData - Schema account data from fetchSchema
|
|
816
|
+
* @returns Serialized data buffer
|
|
817
|
+
*/
|
|
818
|
+
declare function serializeValidationRequestData(data: {
|
|
819
|
+
agent_mint: string;
|
|
820
|
+
method_id: string;
|
|
821
|
+
request_uri: string;
|
|
822
|
+
request_hash?: Uint8Array;
|
|
823
|
+
}, schemaData: Awaited<ReturnType<typeof fetchSchema>>["data"]): Uint8Array;
|
|
824
|
+
/**
|
|
825
|
+
* Serialize validation response data for attestation
|
|
826
|
+
*
|
|
827
|
+
* @param data - ValidationResponse data
|
|
828
|
+
* @param schemaData - Schema account data from fetchSchema
|
|
829
|
+
* @returns Serialized data buffer
|
|
830
|
+
*/
|
|
831
|
+
declare function serializeValidationResponseData(data: {
|
|
832
|
+
request_id: string;
|
|
833
|
+
response: number;
|
|
834
|
+
response_uri?: string;
|
|
835
|
+
response_hash?: Uint8Array;
|
|
836
|
+
tag?: string;
|
|
837
|
+
}, schemaData: Awaited<ReturnType<typeof fetchSchema>>["data"]): Uint8Array;
|
|
838
|
+
/**
|
|
839
|
+
* Compute nonce for FeedbackAuth attestation
|
|
840
|
+
* nonce = keccak256("feedbackAuth:" + agentMint + ":" + clientPubkey)
|
|
841
|
+
*
|
|
842
|
+
* @param agentMint - Agent NFT mint address
|
|
843
|
+
* @param clientPubkey - Client public key
|
|
844
|
+
* @returns Nonce as Address (base58)
|
|
845
|
+
*/
|
|
846
|
+
declare function computeFeedbackAuthNonce(agentMint: Address$1, clientPubkey: Address$1): Address$1;
|
|
847
|
+
/**
|
|
848
|
+
* Compute nonce for Feedback attestation
|
|
849
|
+
* nonce = keccak256("feedback:" + agentMint + ":" + clientPubkey + ":" + timestamp)
|
|
850
|
+
*
|
|
851
|
+
* @param agentMint - Agent NFT mint address
|
|
852
|
+
* @param clientPubkey - Client public key
|
|
853
|
+
* @param timestamp - Unix timestamp
|
|
854
|
+
* @returns Nonce as Address (base58)
|
|
855
|
+
*/
|
|
856
|
+
declare function computeFeedbackNonce(agentMint: Address$1, clientPubkey: Address$1, timestamp: number): Address$1;
|
|
857
|
+
/**
|
|
858
|
+
* Compute nonce for FeedbackResponse attestation
|
|
859
|
+
* nonce = keccak256("response:" + feedbackId + ":" + responderPubkey + ":" + index)
|
|
860
|
+
*
|
|
861
|
+
* @param feedbackId - Feedback attestation address
|
|
862
|
+
* @param responderPubkey - Responder public key
|
|
863
|
+
* @param index - Response index
|
|
864
|
+
* @returns Nonce as Address (base58)
|
|
865
|
+
*/
|
|
866
|
+
declare function computeFeedbackResponseNonce(feedbackId: Address$1, responderPubkey: Address$1, index: number): Address$1;
|
|
867
|
+
/**
|
|
868
|
+
* Compute nonce for ValidationRequest attestation
|
|
869
|
+
* nonce = keccak256("validationReq:" + agentMint + ":" + validatorPubkey + ":" + userNonce)
|
|
870
|
+
*
|
|
871
|
+
* @param agentMint - Agent NFT mint address
|
|
872
|
+
* @param validatorPubkey - Validator public key
|
|
873
|
+
* @param userNonce - User-provided nonce
|
|
874
|
+
* @returns Nonce as Address (base58)
|
|
875
|
+
*/
|
|
876
|
+
declare function computeValidationRequestNonce(agentMint: Address$1, validatorPubkey: Address$1, userNonce: number): Address$1;
|
|
877
|
+
/**
|
|
878
|
+
* Compute nonce for ValidationResponse attestation
|
|
879
|
+
* nonce = keccak256("validationResp:" + requestId + ":" + responseIndex)
|
|
880
|
+
*
|
|
881
|
+
* @param requestId - Request attestation address
|
|
882
|
+
* @param responseIndex - Response index
|
|
883
|
+
* @returns Nonce as Address (base58)
|
|
884
|
+
*/
|
|
885
|
+
declare function computeValidationResponseNonce(requestId: Address$1, responseIndex: number): Address$1;
|
|
886
|
+
/**
|
|
887
|
+
* Serialize certification data for attestation
|
|
888
|
+
*
|
|
889
|
+
* @param data - Certification data
|
|
890
|
+
* @param schemaData - Schema account data from fetchSchema
|
|
891
|
+
* @returns Serialized data buffer
|
|
892
|
+
*/
|
|
893
|
+
declare function serializeCertificationData(data: {
|
|
894
|
+
certifier: string;
|
|
895
|
+
cert_type: string;
|
|
896
|
+
cert_uri: string;
|
|
897
|
+
issued_at: number;
|
|
898
|
+
}, schemaData: Awaited<ReturnType<typeof fetchSchema>>["data"]): Uint8Array;
|
|
899
|
+
/**
|
|
900
|
+
* Compute nonce for Certification attestation
|
|
901
|
+
* nonce = keccak256("certification:" + agentMint + ":" + certifierPubkey + ":" + certType + ":" + issuedAt)
|
|
902
|
+
*
|
|
903
|
+
* @param agentMint - Agent NFT mint address
|
|
904
|
+
* @param certifierPubkey - Certifier public key
|
|
905
|
+
* @param certType - Certification type (e.g., "security-audit")
|
|
906
|
+
* @param issuedAt - Unix timestamp
|
|
907
|
+
* @returns Nonce as Address (base58)
|
|
908
|
+
*/
|
|
909
|
+
declare function computeCertificationNonce(agentMint: Address$1, certifierPubkey: Address$1, certType: string, issuedAt: number): Address$1;
|
|
910
|
+
//#endregion
|
|
911
|
+
//#region src/helpers.d.ts
|
|
912
|
+
declare const TOKEN_2022_PROGRAM_ADDRESS: Address$1<"TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb">;
|
|
913
|
+
declare const ASSOCIATED_TOKEN_PROGRAM_ADDRESS: Address$1<"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL">;
|
|
914
|
+
/**
|
|
915
|
+
* Derive the Registry Config PDA
|
|
916
|
+
*
|
|
917
|
+
* Seeds: ["registry"]
|
|
918
|
+
*/
|
|
919
|
+
declare function findRegistryConfigPda(): Promise<readonly [Address$1, number]>;
|
|
920
|
+
/**
|
|
921
|
+
* Derive the Group Mint PDA (SATI collection)
|
|
922
|
+
*
|
|
923
|
+
* Seeds: ["group_mint"]
|
|
924
|
+
*/
|
|
925
|
+
declare function findGroupMintPda(): Promise<readonly [Address$1, number]>;
|
|
926
|
+
/**
|
|
927
|
+
* Derive Associated Token Account address for Token-2022
|
|
928
|
+
*
|
|
929
|
+
* @param mint - Token mint address
|
|
930
|
+
* @param owner - Token account owner
|
|
931
|
+
*/
|
|
932
|
+
declare function findAssociatedTokenAddress(mint: Address$1, owner: Address$1): Promise<readonly [Address$1, number]>;
|
|
933
|
+
//#endregion
|
|
934
|
+
//#region src/deployed/index.d.ts
|
|
935
|
+
/**
|
|
936
|
+
* Load deployed SAS configuration for a network
|
|
937
|
+
*
|
|
938
|
+
* @param network - Network identifier ("devnet", "mainnet", "localnet")
|
|
939
|
+
* @returns SAS config if deployed, null otherwise
|
|
940
|
+
*/
|
|
941
|
+
declare function loadDeployedConfig(network: string): SATISASConfig | null;
|
|
942
|
+
/**
|
|
943
|
+
* Check if a network has deployed SAS configuration
|
|
944
|
+
*
|
|
945
|
+
* @param network - Network identifier
|
|
946
|
+
* @returns true if config exists for network
|
|
947
|
+
*/
|
|
948
|
+
declare function hasDeployedConfig(network: string): boolean;
|
|
949
|
+
/**
|
|
950
|
+
* Get list of networks with deployed configurations
|
|
951
|
+
*
|
|
952
|
+
* @returns Array of network names with deployed configs
|
|
953
|
+
*/
|
|
954
|
+
declare function getDeployedNetworks(): string[];
|
|
955
|
+
//#endregion
|
|
956
|
+
//#region src/client.d.ts
|
|
957
|
+
/**
|
|
958
|
+
* SATI Client
|
|
959
|
+
*
|
|
960
|
+
* High-level interface for interacting with SATI protocol.
|
|
961
|
+
*
|
|
962
|
+
* @example
|
|
963
|
+
* ```typescript
|
|
964
|
+
* const sati = new SATI({ network: "devnet" });
|
|
965
|
+
*
|
|
966
|
+
* // Register an agent
|
|
967
|
+
* const { mint, memberNumber } = await sati.registerAgent({
|
|
968
|
+
* payer,
|
|
969
|
+
* name: "MyAgent",
|
|
970
|
+
* uri: "ipfs://QmRegistrationFile",
|
|
971
|
+
* });
|
|
972
|
+
*
|
|
973
|
+
* // Load agent identity
|
|
974
|
+
* const agent = await sati.loadAgent(mint);
|
|
975
|
+
* ```
|
|
976
|
+
*/
|
|
977
|
+
declare class SATI {
|
|
978
|
+
private rpc;
|
|
979
|
+
private rpcSubscriptions;
|
|
980
|
+
private sendAndConfirm;
|
|
981
|
+
private network;
|
|
982
|
+
private sasConfig;
|
|
983
|
+
constructor(options: SATIClientOptions);
|
|
984
|
+
/**
|
|
985
|
+
* Set SAS configuration for reputation/validation operations
|
|
986
|
+
*
|
|
987
|
+
* This should be called after SATI schemas are deployed to the network.
|
|
988
|
+
* Use setupSASSchemas() to deploy schemas if they don't exist yet.
|
|
989
|
+
*
|
|
990
|
+
* @param config - SAS credential and schema addresses
|
|
991
|
+
*/
|
|
992
|
+
setSASConfig(config: SATISASConfig): void;
|
|
993
|
+
/**
|
|
994
|
+
* Get current SAS configuration
|
|
995
|
+
*/
|
|
996
|
+
getSASConfig(): SATISASConfig | null;
|
|
997
|
+
/**
|
|
998
|
+
* Ensure SAS config is set, throw if not
|
|
999
|
+
*/
|
|
1000
|
+
private requireSASConfig;
|
|
1001
|
+
/**
|
|
1002
|
+
* Register a new agent identity
|
|
1003
|
+
*
|
|
1004
|
+
* Creates a Token-2022 NFT with metadata and group membership atomically.
|
|
1005
|
+
*
|
|
1006
|
+
* **Compute Budget Note:**
|
|
1007
|
+
* Each additional metadata entry adds ~5-10k compute units.
|
|
1008
|
+
* When using >5 entries, the on-chain program logs a warning suggesting
|
|
1009
|
+
* 400k CUs. If transactions fail with compute exceeded, prepend a
|
|
1010
|
+
* SetComputeUnitLimit instruction to your transaction.
|
|
1011
|
+
*
|
|
1012
|
+
* @param params - Registration parameters
|
|
1013
|
+
* @returns Mint address and member number
|
|
1014
|
+
*/
|
|
1015
|
+
registerAgent(params: {
|
|
1016
|
+
/** Payer for transaction and rent */
|
|
1017
|
+
payer: KeyPairSigner;
|
|
1018
|
+
/** Agent name (max 32 bytes) */
|
|
1019
|
+
name: string;
|
|
1020
|
+
/** Agent symbol (max 10 bytes, default: "SATI") */
|
|
1021
|
+
symbol?: string;
|
|
1022
|
+
/** Registration file URI (max 200 bytes) */
|
|
1023
|
+
uri: string;
|
|
1024
|
+
/** Additional metadata key-value pairs (max 10 entries) */
|
|
1025
|
+
additionalMetadata?: Array<{
|
|
1026
|
+
key: string;
|
|
1027
|
+
value: string;
|
|
1028
|
+
}>;
|
|
1029
|
+
/** Make agent non-transferable (soulbound) */
|
|
1030
|
+
nonTransferable?: boolean;
|
|
1031
|
+
/** Owner of the agent NFT (default: payer) */
|
|
1032
|
+
owner?: Address$1;
|
|
1033
|
+
}): Promise<RegisterAgentResult>;
|
|
1034
|
+
/**
|
|
1035
|
+
* Get registry statistics
|
|
1036
|
+
*/
|
|
1037
|
+
getRegistryStats(): Promise<{
|
|
1038
|
+
groupMint: Address$1;
|
|
1039
|
+
authority: Address$1;
|
|
1040
|
+
totalAgents: bigint;
|
|
1041
|
+
isImmutable: boolean;
|
|
1042
|
+
}>;
|
|
1043
|
+
/**
|
|
1044
|
+
* Load agent identity from mint address
|
|
1045
|
+
*
|
|
1046
|
+
* Fetches Token-2022 metadata and group membership.
|
|
1047
|
+
*
|
|
1048
|
+
* @param mint - Agent NFT mint address
|
|
1049
|
+
* @returns Agent identity or null if not found
|
|
1050
|
+
*/
|
|
1051
|
+
loadAgent(mint: Address$1): Promise<AgentIdentity | null>;
|
|
1052
|
+
/**
|
|
1053
|
+
* Update agent metadata
|
|
1054
|
+
*
|
|
1055
|
+
* Directly calls Token-2022 updateTokenMetadataField instruction.
|
|
1056
|
+
* Requires owner signature.
|
|
1057
|
+
*
|
|
1058
|
+
* Note: This method requires building raw instructions for the
|
|
1059
|
+
* spl-token-metadata-interface. For now, use @solana/spl-token directly
|
|
1060
|
+
* or the Anchor client for metadata updates.
|
|
1061
|
+
*
|
|
1062
|
+
* @param _mint - Agent NFT mint address
|
|
1063
|
+
* @param _updates - Fields to update
|
|
1064
|
+
*/
|
|
1065
|
+
updateAgentMetadata(_mint: Address$1, _updates: {
|
|
1066
|
+
name?: string;
|
|
1067
|
+
uri?: string;
|
|
1068
|
+
additionalMetadata?: Array<{
|
|
1069
|
+
key: string;
|
|
1070
|
+
value: string;
|
|
1071
|
+
}>;
|
|
1072
|
+
}): Promise<void>;
|
|
1073
|
+
/**
|
|
1074
|
+
* Transfer agent to new owner
|
|
1075
|
+
*
|
|
1076
|
+
* Standard Token-2022 transfer. Requires current owner signature.
|
|
1077
|
+
*
|
|
1078
|
+
* @param params - Transfer parameters
|
|
1079
|
+
*/
|
|
1080
|
+
transferAgent(params: {
|
|
1081
|
+
/** Payer for transaction fees and new ATA creation */
|
|
1082
|
+
payer: KeyPairSigner;
|
|
1083
|
+
/** Current owner (must sign) */
|
|
1084
|
+
owner: KeyPairSigner;
|
|
1085
|
+
/** Agent NFT mint address */
|
|
1086
|
+
mint: Address$1;
|
|
1087
|
+
/** New owner address */
|
|
1088
|
+
newOwner: Address$1;
|
|
1089
|
+
}): Promise<{
|
|
1090
|
+
signature: string;
|
|
1091
|
+
}>;
|
|
1092
|
+
/**
|
|
1093
|
+
* Get current owner of an agent
|
|
1094
|
+
*
|
|
1095
|
+
* Finds the token account holding the NFT and returns its owner.
|
|
1096
|
+
*
|
|
1097
|
+
* @param mint - Agent NFT mint address
|
|
1098
|
+
* @returns Owner address
|
|
1099
|
+
*/
|
|
1100
|
+
getAgentOwner(mint: Address$1): Promise<Address$1>;
|
|
1101
|
+
/**
|
|
1102
|
+
* List registered agents
|
|
1103
|
+
*
|
|
1104
|
+
* Uses getProgramAccounts to find all SATI agent NFTs.
|
|
1105
|
+
* For better performance at scale, use an indexer.
|
|
1106
|
+
*
|
|
1107
|
+
* @param params - Pagination parameters
|
|
1108
|
+
* @returns Array of agent identities
|
|
1109
|
+
*/
|
|
1110
|
+
listAgents(params?: {
|
|
1111
|
+
offset?: number;
|
|
1112
|
+
limit?: number;
|
|
1113
|
+
}): Promise<AgentIdentity[]>;
|
|
1114
|
+
/**
|
|
1115
|
+
* Authorize a client to submit feedback
|
|
1116
|
+
*
|
|
1117
|
+
* Creates a FeedbackAuth attestation via SAS.
|
|
1118
|
+
* Must be called by the agent owner.
|
|
1119
|
+
*
|
|
1120
|
+
* @param params - Authorization parameters
|
|
1121
|
+
* @returns Attestation address and signature
|
|
1122
|
+
*/
|
|
1123
|
+
authorizeFeedback(params: {
|
|
1124
|
+
/** Payer for transaction */
|
|
1125
|
+
payer: KeyPairSigner;
|
|
1126
|
+
/** Agent owner (must sign) */
|
|
1127
|
+
agentOwner: KeyPairSigner;
|
|
1128
|
+
/** Agent NFT mint address */
|
|
1129
|
+
agentMint: Address$1;
|
|
1130
|
+
/** Client to authorize */
|
|
1131
|
+
client: Address$1;
|
|
1132
|
+
/** Maximum feedback index allowed (ERC-8004: indexLimit) */
|
|
1133
|
+
indexLimit: number;
|
|
1134
|
+
/** Expiration timestamp (0 = no expiry) */
|
|
1135
|
+
expiry?: number;
|
|
1136
|
+
}): Promise<AttestationResult>;
|
|
1137
|
+
/**
|
|
1138
|
+
* Revoke feedback authorization
|
|
1139
|
+
*
|
|
1140
|
+
* Closes the FeedbackAuth attestation and reclaims rent.
|
|
1141
|
+
*
|
|
1142
|
+
* @param params - Revocation parameters
|
|
1143
|
+
*/
|
|
1144
|
+
revokeAuthorization(params: {
|
|
1145
|
+
/** Payer (receives rent refund) */
|
|
1146
|
+
payer: KeyPairSigner;
|
|
1147
|
+
/** Authority who created the attestation */
|
|
1148
|
+
authority: KeyPairSigner;
|
|
1149
|
+
/** FeedbackAuth attestation address to revoke */
|
|
1150
|
+
attestation: Address$1;
|
|
1151
|
+
}): Promise<{
|
|
1152
|
+
signature: string;
|
|
1153
|
+
}>;
|
|
1154
|
+
/**
|
|
1155
|
+
* Submit feedback for an agent
|
|
1156
|
+
*
|
|
1157
|
+
* Creates a Feedback attestation via SAS.
|
|
1158
|
+
* Requires prior authorization from agent owner via authorizeFeedback().
|
|
1159
|
+
*
|
|
1160
|
+
* @param params - Feedback parameters
|
|
1161
|
+
* @returns Attestation address and signature
|
|
1162
|
+
*/
|
|
1163
|
+
giveFeedback(params: {
|
|
1164
|
+
/** Payer for transaction */
|
|
1165
|
+
payer: KeyPairSigner;
|
|
1166
|
+
/** Client submitting feedback (must be authorized) */
|
|
1167
|
+
client: KeyPairSigner;
|
|
1168
|
+
/** Agent NFT mint receiving feedback */
|
|
1169
|
+
agentMint: Address$1;
|
|
1170
|
+
/** Score 0-100 */
|
|
1171
|
+
score: number;
|
|
1172
|
+
/** Optional tag (ERC-8004: tag1) */
|
|
1173
|
+
tag1?: string;
|
|
1174
|
+
/** Optional tag (ERC-8004: tag2) */
|
|
1175
|
+
tag2?: string;
|
|
1176
|
+
/** Off-chain feedback file URI (ERC-8004: fileuri) */
|
|
1177
|
+
fileuri?: string;
|
|
1178
|
+
/** File hash (ERC-8004: filehash) */
|
|
1179
|
+
filehash?: Uint8Array;
|
|
1180
|
+
/** x402 payment proof reference */
|
|
1181
|
+
paymentProof?: string;
|
|
1182
|
+
}): Promise<AttestationResult>;
|
|
1183
|
+
/**
|
|
1184
|
+
* Revoke submitted feedback
|
|
1185
|
+
*
|
|
1186
|
+
* Closes the Feedback attestation and reclaims rent.
|
|
1187
|
+
*
|
|
1188
|
+
* @param params - Revocation parameters
|
|
1189
|
+
*/
|
|
1190
|
+
revokeFeedback(params: {
|
|
1191
|
+
/** Payer (receives rent refund) */
|
|
1192
|
+
payer: KeyPairSigner;
|
|
1193
|
+
/** Client who submitted the feedback */
|
|
1194
|
+
client: KeyPairSigner;
|
|
1195
|
+
/** Feedback attestation address to revoke */
|
|
1196
|
+
attestation: Address$1;
|
|
1197
|
+
}): Promise<{
|
|
1198
|
+
signature: string;
|
|
1199
|
+
}>;
|
|
1200
|
+
/**
|
|
1201
|
+
* Append response to feedback
|
|
1202
|
+
*
|
|
1203
|
+
* Creates a FeedbackResponse attestation via SAS.
|
|
1204
|
+
* Can be called by agent owner, auditor, or anyone.
|
|
1205
|
+
*
|
|
1206
|
+
* @param params - Response parameters
|
|
1207
|
+
* @returns Attestation address and signature
|
|
1208
|
+
*/
|
|
1209
|
+
appendResponse(params: {
|
|
1210
|
+
/** Payer for transaction */
|
|
1211
|
+
payer: KeyPairSigner;
|
|
1212
|
+
/** Responder (signer) */
|
|
1213
|
+
responder: KeyPairSigner;
|
|
1214
|
+
/** Feedback attestation being responded to */
|
|
1215
|
+
feedbackAttestation: Address$1;
|
|
1216
|
+
/** Off-chain response URI */
|
|
1217
|
+
responseUri: string;
|
|
1218
|
+
/** Response content hash */
|
|
1219
|
+
responseHash?: Uint8Array;
|
|
1220
|
+
/** Response index (allows multiple responses, default: 0) */
|
|
1221
|
+
responseIndex?: number;
|
|
1222
|
+
}): Promise<AttestationResult>;
|
|
1223
|
+
/**
|
|
1224
|
+
* Read feedback attestation
|
|
1225
|
+
*
|
|
1226
|
+
* @param attestation - Feedback attestation address
|
|
1227
|
+
* @returns Feedback data or null if not found
|
|
1228
|
+
*/
|
|
1229
|
+
readFeedback(attestation: Address$1): Promise<Feedback | null>;
|
|
1230
|
+
/**
|
|
1231
|
+
* Request validation from a validator
|
|
1232
|
+
*
|
|
1233
|
+
* Creates a ValidationRequest attestation via SAS.
|
|
1234
|
+
* Must be called by agent owner.
|
|
1235
|
+
*
|
|
1236
|
+
* @param params - Request parameters
|
|
1237
|
+
* @returns Attestation address and signature
|
|
1238
|
+
*/
|
|
1239
|
+
requestValidation(params: {
|
|
1240
|
+
/** Payer for transaction */
|
|
1241
|
+
payer: KeyPairSigner;
|
|
1242
|
+
/** Agent owner (must sign) */
|
|
1243
|
+
agentOwner: KeyPairSigner;
|
|
1244
|
+
/** Agent NFT mint requesting validation */
|
|
1245
|
+
agentMint: Address$1;
|
|
1246
|
+
/** Validator address */
|
|
1247
|
+
validator: Address$1;
|
|
1248
|
+
/** Validation method ("tee", "zkml", "restake") */
|
|
1249
|
+
methodId: string;
|
|
1250
|
+
/** Off-chain validation request URI */
|
|
1251
|
+
requestUri: string;
|
|
1252
|
+
/** Request content hash */
|
|
1253
|
+
requestHash?: Uint8Array;
|
|
1254
|
+
}): Promise<AttestationResult>;
|
|
1255
|
+
/**
|
|
1256
|
+
* Respond to a validation request
|
|
1257
|
+
*
|
|
1258
|
+
* Creates a ValidationResponse attestation via SAS.
|
|
1259
|
+
* Called by validators.
|
|
1260
|
+
*
|
|
1261
|
+
* @param params - Response parameters
|
|
1262
|
+
* @returns Attestation address and signature
|
|
1263
|
+
*/
|
|
1264
|
+
respondToValidation(params: {
|
|
1265
|
+
/** Payer for transaction */
|
|
1266
|
+
payer: KeyPairSigner;
|
|
1267
|
+
/** Validator (must sign) */
|
|
1268
|
+
validator: KeyPairSigner;
|
|
1269
|
+
/** ValidationRequest attestation being responded to */
|
|
1270
|
+
requestAttestation: Address$1;
|
|
1271
|
+
/** Response score 0-100 (0=fail, 100=pass) */
|
|
1272
|
+
response: number;
|
|
1273
|
+
/** Off-chain response/evidence URI */
|
|
1274
|
+
responseUri?: string;
|
|
1275
|
+
/** Response content hash */
|
|
1276
|
+
responseHash?: Uint8Array;
|
|
1277
|
+
/** Optional categorization tag */
|
|
1278
|
+
tag?: string;
|
|
1279
|
+
/** Response index (allows multiple responses, default: 0) */
|
|
1280
|
+
responseIndex?: number;
|
|
1281
|
+
}): Promise<AttestationResult>;
|
|
1282
|
+
/**
|
|
1283
|
+
* Get validation status
|
|
1284
|
+
*
|
|
1285
|
+
* Fetches the validation request and looks for any responses.
|
|
1286
|
+
*
|
|
1287
|
+
* @param requestAttestation - ValidationRequest attestation address
|
|
1288
|
+
* @param responseIndex - Response index to check (default: 0)
|
|
1289
|
+
* @returns Validation status or null if not found
|
|
1290
|
+
*/
|
|
1291
|
+
getValidationStatus(requestAttestation: Address$1, responseIndex?: number): Promise<ValidationStatus | null>;
|
|
1292
|
+
/**
|
|
1293
|
+
* Setup SATI SAS schemas with idempotent deployment.
|
|
1294
|
+
*
|
|
1295
|
+
* This method is safe to call multiple times. It will:
|
|
1296
|
+
* 1. Check which components already exist on-chain
|
|
1297
|
+
* 2. Deploy only missing credential and schemas
|
|
1298
|
+
* 3. Verify all components exist after deployment
|
|
1299
|
+
*
|
|
1300
|
+
* @param params - Setup parameters
|
|
1301
|
+
* @returns Deployment result with status and config
|
|
1302
|
+
*/
|
|
1303
|
+
setupSASSchemas(params: {
|
|
1304
|
+
/** Payer for account creation */
|
|
1305
|
+
payer: KeyPairSigner;
|
|
1306
|
+
/** Credential authority (controls schema creation) */
|
|
1307
|
+
authority: KeyPairSigner;
|
|
1308
|
+
/** Authorized signers for attestations */
|
|
1309
|
+
authorizedSigners?: Address$1[];
|
|
1310
|
+
/** Deploy test schemas (v0) instead of production schemas */
|
|
1311
|
+
testMode?: boolean;
|
|
1312
|
+
}): Promise<SASDeploymentResult>;
|
|
1313
|
+
/**
|
|
1314
|
+
* Verify that all SAS components exist on-chain.
|
|
1315
|
+
*
|
|
1316
|
+
* @param config - SAS configuration to verify
|
|
1317
|
+
* @returns Verification result with list of missing components
|
|
1318
|
+
*/
|
|
1319
|
+
private verifySASDeployment;
|
|
1320
|
+
}
|
|
1321
|
+
//#endregion
|
|
1322
|
+
export { ASSOCIATED_TOKEN_PROGRAM_ADDRESS, type Address, AgentIdentity, AgentRegistered, AgentRegisteredArgs, AttestationResult, CERTIFICATION_SCHEMA, DeployedSASConfig, FEEDBACK_AUTH_SCHEMA, FEEDBACK_RESPONSE_SCHEMA, FEEDBACK_SCHEMA, Feedback, FeedbackAuthorization, INITIALIZE_DISCRIMINATOR, InitializeAsyncInput, InitializeInput, InitializeInstruction, InitializeInstructionData, InitializeInstructionDataArgs, MetadataEntry, MetadataEntryArgs, ParsedInitializeInstruction, ParsedRegisterAgentInstruction, ParsedSatiRegistryInstruction, ParsedUpdateRegistryAuthorityInstruction, REGISTER_AGENT_DISCRIMINATOR, REGISTRY_CONFIG_DISCRIMINATOR, RegisterAgentAsyncInput, RegisterAgentInput, RegisterAgentInstruction, RegisterAgentInstructionData, RegisterAgentInstructionDataArgs, RegisterAgentResult, RegistryAuthorityUpdated, RegistryAuthorityUpdatedArgs, RegistryConfig, RegistryConfigArgs, RegistryInitialized, RegistryInitializedArgs, SASDeploymentResult, SASLayoutType, SASSchema, SOLANA_ATTESTATION_SERVICE_PROGRAM_ADDRESS as SAS_PROGRAM_ID, SATI, SATIClientOptions, type SATISASConfig, SATI_CREDENTIAL_NAME, SATI_REGISTRY_ERROR__IMMUTABLE_AUTHORITY, SATI_REGISTRY_ERROR__INVALID_AUTHORITY, SATI_REGISTRY_ERROR__INVALID_GROUP_MINT, SATI_REGISTRY_ERROR__METADATA_KEY_TOO_LONG, SATI_REGISTRY_ERROR__METADATA_VALUE_TOO_LONG, SATI_REGISTRY_ERROR__MINT_AUTHORITY_NOT_RENOUNCED, SATI_REGISTRY_ERROR__NAME_TOO_LONG, SATI_REGISTRY_ERROR__OVERFLOW, SATI_REGISTRY_ERROR__SYMBOL_TOO_LONG, SATI_REGISTRY_ERROR__TOO_MANY_METADATA_ENTRIES, SATI_REGISTRY_ERROR__URI_TOO_LONG, SATI_REGISTRY_PROGRAM_ADDRESS, SATI_SAS_SCHEMAS, SATI_SCHEMAS, SATI_SCHEMA_NAMES, SCHEMA_NAMES, SatiRegistryAccount, SatiRegistryError, SatiRegistryInstruction, SchemaDeploymentStatus, TOKEN_2022_PROGRAM_ADDRESS, UPDATE_REGISTRY_AUTHORITY_DISCRIMINATOR, UpdateRegistryAuthorityAsyncInput, UpdateRegistryAuthorityInput, UpdateRegistryAuthorityInstruction, UpdateRegistryAuthorityInstructionData, UpdateRegistryAuthorityInstructionDataArgs, VALIDATION_REQUEST_SCHEMA, VALIDATION_RESPONSE_SCHEMA, ValidationRequest, ValidationStatus, address, computeCertificationNonce, computeFeedbackAuthNonce, computeFeedbackNonce, computeFeedbackResponseNonce, computeValidationRequestNonce, computeValidationResponseNonce, decodeRegistryConfig, deriveAttestationPda, deriveCredentialPda, deriveEventAuthorityAddress, deriveSatiAttestationPda, deriveSatiCredentialPda, deriveSatiSchemaPda, deriveSchemaPda, deserializeAttestationData, fetchAllMaybeRegistryConfig, fetchAllMaybeSchema, fetchAllRegistryConfig, fetchAttestation, fetchMaybeCredential, fetchMaybeRegistryConfig, fetchMaybeSchema, fetchRegistryConfig, fetchSchema, findAssociatedTokenAddress, findGroupMintPda, findRegistryConfigPda, getAgentRegisteredCodec, getAgentRegisteredDecoder, getAgentRegisteredEncoder, getCloseAttestationInstruction, getCreateAttestationInstruction, getCreateCredentialInstruction, getCreateSatiCredentialInstruction, getCreateSatiSchemaInstruction, getCreateSchemaInstruction, getDeployedNetworks, getInitializeDiscriminatorBytes, getInitializeInstruction, getInitializeInstructionAsync, getInitializeInstructionDataCodec, getInitializeInstructionDataDecoder, getInitializeInstructionDataEncoder, getMetadataEntryCodec, getMetadataEntryDecoder, getMetadataEntryEncoder, getRegisterAgentDiscriminatorBytes, getRegisterAgentInstruction, getRegisterAgentInstructionAsync, getRegisterAgentInstructionDataCodec, getRegisterAgentInstructionDataDecoder, getRegisterAgentInstructionDataEncoder, getRegistryAuthorityUpdatedCodec, getRegistryAuthorityUpdatedDecoder, getRegistryAuthorityUpdatedEncoder, getRegistryConfigCodec, getRegistryConfigDecoder, getRegistryConfigDiscriminatorBytes, getRegistryConfigEncoder, getRegistryConfigSize, getRegistryInitializedCodec, getRegistryInitializedDecoder, getRegistryInitializedEncoder, getSatiRegistryErrorMessage, getUpdateRegistryAuthorityDiscriminatorBytes, getUpdateRegistryAuthorityInstruction, getUpdateRegistryAuthorityInstructionAsync, getUpdateRegistryAuthorityInstructionDataCodec, getUpdateRegistryAuthorityInstructionDataDecoder, getUpdateRegistryAuthorityInstructionDataEncoder, hasDeployedConfig, identifySatiRegistryAccount, identifySatiRegistryInstruction, isSatiRegistryError, loadDeployedConfig, parseInitializeInstruction, parseRegisterAgentInstruction, parseUpdateRegistryAuthorityInstruction, serializeAttestationData, serializeCertificationData, serializeFeedbackAuthData, serializeFeedbackData, serializeFeedbackResponseData, serializeValidationRequestData, serializeValidationResponseData };
|