@useaccord/sdk 0.5.1 → 0.6.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/accord.d.ts.map +1 -1
- package/dist/adapter.d.ts.map +1 -1
- package/dist/errors.d.ts +30 -1
- package/dist/errors.d.ts.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +382 -247
- package/dist/index.js.map +1 -1
- package/dist/methods/vrf.d.ts +7 -7
- package/dist/methods/vrf.d.ts.map +1 -1
- package/dist/methods.d.ts +3 -1
- package/dist/methods.d.ts.map +1 -1
- package/dist/queries.d.ts +16 -1
- package/dist/queries.d.ts.map +1 -1
- package/dist/query.d.ts +4 -1
- package/dist/query.d.ts.map +1 -1
- package/dist/sas.d.ts +61 -0
- package/dist/sas.d.ts.map +1 -0
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -7003,7 +7003,10 @@ function createAccordAdapter(accord) {
|
|
|
7003
7003
|
},
|
|
7004
7004
|
{ programAddress: input.programId }
|
|
7005
7005
|
);
|
|
7006
|
-
return appendRemaining(ix, [
|
|
7006
|
+
return appendRemaining(ix, [
|
|
7007
|
+
input.jurorStake,
|
|
7008
|
+
...input.attestation ? [{ address: input.attestation, isWritable: false }] : []
|
|
7009
|
+
]);
|
|
7007
7010
|
},
|
|
7008
7011
|
async fetchCommittedVrf(dispute) {
|
|
7009
7012
|
const m = await accord.client.accord.accounts.dispute.fetchMaybe(dispute);
|
|
@@ -7830,7 +7833,7 @@ function sleep(ms) {
|
|
|
7830
7833
|
return new Promise((r) => setTimeout(r, ms));
|
|
7831
7834
|
}
|
|
7832
7835
|
__name(sleep, "sleep");
|
|
7833
|
-
function drawSeat(client, programId, accounts, roundPda, seat, membership) {
|
|
7836
|
+
function drawSeat(client, programId, accounts, roundPda, seat, membership, attestation) {
|
|
7834
7837
|
return client.buildDrawSeat({
|
|
7835
7838
|
programId,
|
|
7836
7839
|
accounts,
|
|
@@ -7840,7 +7843,8 @@ function drawSeat(client, programId, accounts, roundPda, seat, membership) {
|
|
|
7840
7843
|
leaf: membership.leaf,
|
|
7841
7844
|
proof: membership.proof,
|
|
7842
7845
|
index: membership.index,
|
|
7843
|
-
jurorStake: membership.jurorStake
|
|
7846
|
+
jurorStake: membership.jurorStake,
|
|
7847
|
+
attestation
|
|
7844
7848
|
});
|
|
7845
7849
|
}
|
|
7846
7850
|
__name(drawSeat, "drawSeat");
|
|
@@ -8072,7 +8076,7 @@ function createAccordMethods(adapter, programId = ACCORD_PROGRAM_ID, _signer) {
|
|
|
8072
8076
|
// vrf + per-seat draw
|
|
8073
8077
|
requestVrf: /* @__PURE__ */ __name((accounts, extras) => requestVrf(adapter, programId, accounts, extras), "requestVrf"),
|
|
8074
8078
|
awaitCommittedVrf: /* @__PURE__ */ __name((dispute, opts) => awaitCommittedVrf(adapter, dispute, opts), "awaitCommittedVrf"),
|
|
8075
|
-
drawSeat: /* @__PURE__ */ __name((accounts, roundPda, seat, membership) => drawSeat(adapter, programId, accounts, roundPda, seat, membership), "drawSeat"),
|
|
8079
|
+
drawSeat: /* @__PURE__ */ __name((accounts, roundPda, seat, membership, attestation) => drawSeat(adapter, programId, accounts, roundPda, seat, membership, attestation), "drawSeat"),
|
|
8076
8080
|
// voting
|
|
8077
8081
|
commit: /* @__PURE__ */ __name((accounts, args) => commit(adapter, programId, accounts, args), "commit"),
|
|
8078
8082
|
reveal: /* @__PURE__ */ __name((accounts, args) => reveal(adapter, programId, accounts, args), "reveal"),
|
|
@@ -8099,7 +8103,7 @@ var Accord = class {
|
|
|
8099
8103
|
this.rpc = createSolanaRpc(config.endpoint);
|
|
8100
8104
|
this.signer = config.signer;
|
|
8101
8105
|
this.client = accordProgram()(
|
|
8102
|
-
this.rpc
|
|
8106
|
+
{ rpc: this.rpc }
|
|
8103
8107
|
);
|
|
8104
8108
|
}
|
|
8105
8109
|
/**
|
|
@@ -8271,255 +8275,340 @@ function findDisputesByFiler(rpc, filer) {
|
|
|
8271
8275
|
}
|
|
8272
8276
|
__name(findDisputesByFiler, "findDisputesByFiler");
|
|
8273
8277
|
|
|
8278
|
+
// src/sas.ts
|
|
8279
|
+
import {
|
|
8280
|
+
getBase58Decoder as getBase58Decoder2,
|
|
8281
|
+
getBase64Encoder as getBase64Encoder2,
|
|
8282
|
+
getAddressDecoder as getAddressDecoder12
|
|
8283
|
+
} from "@solana/kit";
|
|
8284
|
+
var SAS_PROGRAM_ID = "22zoJMtdu4tQc2PzL74ZUT7FrwgB1Udec8DdW4yw4BdG";
|
|
8285
|
+
var SAS_ATTESTATION_DISCRIMINATOR = 2;
|
|
8286
|
+
var DISC_OFF = 0;
|
|
8287
|
+
var NONCE_OFF = 1;
|
|
8288
|
+
var CREDENTIAL_OFF = 33;
|
|
8289
|
+
var SCHEMA_OFF = 65;
|
|
8290
|
+
var DATA_LEN_OFF = 97;
|
|
8291
|
+
var DATA_OFF = 101;
|
|
8292
|
+
var WALLET_OFF = DATA_OFF;
|
|
8293
|
+
var WALLET_W = 32;
|
|
8294
|
+
var SIGNER_W = 32;
|
|
8295
|
+
var EXPIRY_W = 8;
|
|
8296
|
+
var SAS_ATTESTATION_MIN_LEN = DATA_OFF + WALLET_W + SIGNER_W + EXPIRY_W;
|
|
8297
|
+
function decodeSasAttestation(bytes) {
|
|
8298
|
+
const u8 = bytes;
|
|
8299
|
+
if (u8.length < SAS_ATTESTATION_MIN_LEN) {
|
|
8300
|
+
throw new Error(
|
|
8301
|
+
`SasAttestationMalformed: ${u8.length} < ${SAS_ATTESTATION_MIN_LEN} bytes`
|
|
8302
|
+
);
|
|
8303
|
+
}
|
|
8304
|
+
if (u8[DISC_OFF] !== SAS_ATTESTATION_DISCRIMINATOR) {
|
|
8305
|
+
throw new Error(
|
|
8306
|
+
`SasAttestationMalformed: discriminator ${u8[DISC_OFF]} != ${SAS_ATTESTATION_DISCRIMINATOR}`
|
|
8307
|
+
);
|
|
8308
|
+
}
|
|
8309
|
+
const dv = new DataView(u8.buffer, u8.byteOffset, u8.byteLength);
|
|
8310
|
+
const dataLen = dv.getUint32(DATA_LEN_OFF, true);
|
|
8311
|
+
if (dataLen < WALLET_W) {
|
|
8312
|
+
throw new Error(
|
|
8313
|
+
`SasAttestationMalformed: data_len ${dataLen} < ${WALLET_W} (no wallet binding)`
|
|
8314
|
+
);
|
|
8315
|
+
}
|
|
8316
|
+
const signerOff = DATA_OFF + dataLen;
|
|
8317
|
+
const expiryOff = signerOff + SIGNER_W;
|
|
8318
|
+
if (u8.length < expiryOff + EXPIRY_W) {
|
|
8319
|
+
throw new Error(`SasAttestationMalformed: truncated expiry tail`);
|
|
8320
|
+
}
|
|
8321
|
+
const addressDecoder = getAddressDecoder12();
|
|
8322
|
+
return {
|
|
8323
|
+
nonce: u8.slice(NONCE_OFF, NONCE_OFF + WALLET_W),
|
|
8324
|
+
credential: addressDecoder.decode(
|
|
8325
|
+
u8.subarray(CREDENTIAL_OFF, CREDENTIAL_OFF + WALLET_W)
|
|
8326
|
+
),
|
|
8327
|
+
schema: addressDecoder.decode(
|
|
8328
|
+
u8.subarray(SCHEMA_OFF, SCHEMA_OFF + WALLET_W)
|
|
8329
|
+
),
|
|
8330
|
+
wallet: addressDecoder.decode(
|
|
8331
|
+
u8.subarray(WALLET_OFF, WALLET_OFF + WALLET_W)
|
|
8332
|
+
),
|
|
8333
|
+
signer: addressDecoder.decode(u8.subarray(signerOff, signerOff + SIGNER_W)),
|
|
8334
|
+
expiry: dv.getBigInt64(expiryOff, true)
|
|
8335
|
+
};
|
|
8336
|
+
}
|
|
8337
|
+
__name(decodeSasAttestation, "decodeSasAttestation");
|
|
8338
|
+
async function findSasAttestations(rpc, filters = {}) {
|
|
8339
|
+
const base582 = getBase58Decoder2();
|
|
8340
|
+
const memcmp = [
|
|
8341
|
+
{
|
|
8342
|
+
memcmp: {
|
|
8343
|
+
offset: 0n,
|
|
8344
|
+
// Single discriminator byte at offset 0 (SAS uses u8, not Anchor's
|
|
8345
|
+
// 8). Kit's base58 decoder yields plain `string`; brand it like
|
|
8346
|
+
// query.ts does for the filter's `bytes` field.
|
|
8347
|
+
bytes: base582.decode(
|
|
8348
|
+
new Uint8Array([SAS_ATTESTATION_DISCRIMINATOR])
|
|
8349
|
+
),
|
|
8350
|
+
encoding: "base58"
|
|
8351
|
+
}
|
|
8352
|
+
}
|
|
8353
|
+
];
|
|
8354
|
+
if (filters.credential !== void 0) {
|
|
8355
|
+
memcmp.push(addressFilter(BigInt(CREDENTIAL_OFF), filters.credential));
|
|
8356
|
+
}
|
|
8357
|
+
if (filters.schema !== void 0) {
|
|
8358
|
+
memcmp.push(addressFilter(BigInt(SCHEMA_OFF), filters.schema));
|
|
8359
|
+
}
|
|
8360
|
+
if (filters.wallet !== void 0) {
|
|
8361
|
+
memcmp.push(addressFilter(BigInt(WALLET_OFF), filters.wallet));
|
|
8362
|
+
}
|
|
8363
|
+
const accountInfos = await rpc.getProgramAccounts(SAS_PROGRAM_ID, { encoding: "base64", filters: memcmp }).send();
|
|
8364
|
+
const base64 = getBase64Encoder2();
|
|
8365
|
+
const out = [];
|
|
8366
|
+
for (const info of accountInfos) {
|
|
8367
|
+
try {
|
|
8368
|
+
const [data] = info.account.data;
|
|
8369
|
+
out.push({
|
|
8370
|
+
...info.account,
|
|
8371
|
+
address: info.pubkey,
|
|
8372
|
+
programAddress: SAS_PROGRAM_ID,
|
|
8373
|
+
data: decodeSasAttestation(base64.encode(data))
|
|
8374
|
+
});
|
|
8375
|
+
} catch {
|
|
8376
|
+
}
|
|
8377
|
+
}
|
|
8378
|
+
return out;
|
|
8379
|
+
}
|
|
8380
|
+
__name(findSasAttestations, "findSasAttestations");
|
|
8381
|
+
|
|
8382
|
+
// src/generated/errors/accord.ts
|
|
8383
|
+
import {
|
|
8384
|
+
isProgramError
|
|
8385
|
+
} from "@solana/kit";
|
|
8386
|
+
var ACCORD_ERROR__UNAUTHORIZED = 6e3;
|
|
8387
|
+
var ACCORD_ERROR__SUBACCORD_MISMATCH = 6001;
|
|
8388
|
+
var ACCORD_ERROR__IMMUTABLE_SUBACCORD = 6002;
|
|
8389
|
+
var ACCORD_ERROR__TIMELOCK_NOT_ELAPSED = 6003;
|
|
8390
|
+
var ACCORD_ERROR__NO_PENDING_UPDATE = 6004;
|
|
8391
|
+
var ACCORD_ERROR__NOT_PAUSE_AUTHORITY = 6005;
|
|
8392
|
+
var ACCORD_ERROR__ALREADY_PAUSED = 6006;
|
|
8393
|
+
var ACCORD_ERROR__NOT_PAUSED = 6007;
|
|
8394
|
+
var ACCORD_ERROR__NO_PENDING_UNPAUSE = 6008;
|
|
8395
|
+
var ACCORD_ERROR__UNPAUSE_TIMELOCK_NOT_ELAPSED = 6009;
|
|
8396
|
+
var ACCORD_ERROR__PROGRAM_PAUSED = 6010;
|
|
8397
|
+
var ACCORD_ERROR__INSUFFICIENT_STAKE = 6011;
|
|
8398
|
+
var ACCORD_ERROR__STAKE_LOCKED = 6012;
|
|
8399
|
+
var ACCORD_ERROR__INVALID_AMOUNT = 6013;
|
|
8400
|
+
var ACCORD_ERROR__WITHDRAWAL_TOO_EARLY = 6014;
|
|
8401
|
+
var ACCORD_ERROR__NO_PENDING_WITHDRAWAL = 6015;
|
|
8402
|
+
var ACCORD_ERROR__INSUFFICIENT_BALANCE = 6016;
|
|
8403
|
+
var ACCORD_ERROR__PENDING_SETTLEMENT = 6017;
|
|
8404
|
+
var ACCORD_ERROR__WITHDRAWAL_PENDING = 6018;
|
|
8405
|
+
var ACCORD_ERROR__INSUFFICIENT_JURORS = 6019;
|
|
8406
|
+
var ACCORD_ERROR__INVALID_OPTIONS = 6020;
|
|
8407
|
+
var ACCORD_ERROR__INVALID_STATE = 6021;
|
|
8408
|
+
var ACCORD_ERROR__FEE_MISMATCH = 6022;
|
|
8409
|
+
var ACCORD_ERROR__INVALID_MERKLE_PATH = 6023;
|
|
8410
|
+
var ACCORD_ERROR__TREE_FULL = 6024;
|
|
8411
|
+
var ACCORD_ERROR__DUPLICATE_JUROR = 6025;
|
|
8412
|
+
var ACCORD_ERROR__INVALID_MEMBERSHIP_PROOF = 6026;
|
|
8413
|
+
var ACCORD_ERROR__INVALID_PANEL_SIZE = 6027;
|
|
8414
|
+
var ACCORD_ERROR__INFLATED_STAKE = 6028;
|
|
8415
|
+
var ACCORD_ERROR__SORTITION_MISMATCH = 6029;
|
|
8416
|
+
var ACCORD_ERROR__VRF_ALREADY_COMMITTED = 6030;
|
|
8417
|
+
var ACCORD_ERROR__VRF_NOT_COMMITTED = 6031;
|
|
8418
|
+
var ACCORD_ERROR__COMMIT_ALREADY_EXISTS = 6032;
|
|
8419
|
+
var ACCORD_ERROR__COMMIT_MISSING = 6033;
|
|
8420
|
+
var ACCORD_ERROR__REVEAL_MISMATCH = 6034;
|
|
8421
|
+
var ACCORD_ERROR__COMMIT_WINDOW_CLOSED = 6035;
|
|
8422
|
+
var ACCORD_ERROR__REVEAL_WINDOW_CLOSED = 6036;
|
|
8423
|
+
var ACCORD_ERROR__NOT_DRAWN_JUROR = 6037;
|
|
8424
|
+
var ACCORD_ERROR__INVALID_VOTE = 6038;
|
|
8425
|
+
var ACCORD_ERROR__ALREADY_REVEALED = 6039;
|
|
8426
|
+
var ACCORD_ERROR__APPEAL_WINDOW_OPEN = 6040;
|
|
8427
|
+
var ACCORD_ERROR__MAX_APPEALS_REACHED = 6041;
|
|
8428
|
+
var ACCORD_ERROR__MAX_APPEALS_LIMIT_EXCEEDED = 6042;
|
|
8429
|
+
var ACCORD_ERROR__APPEAL_WINDOW_CLOSED = 6043;
|
|
8430
|
+
var ACCORD_ERROR__APPEAL_WINDOW_TOO_SHORT = 6044;
|
|
8431
|
+
var ACCORD_ERROR__ROUND_NOT_FINALIZABLE = 6045;
|
|
8432
|
+
var ACCORD_ERROR__DISPUTE_NOT_FINAL = 6046;
|
|
8433
|
+
var ACCORD_ERROR__ARITHMETIC_OVERFLOW = 6047;
|
|
8434
|
+
var ACCORD_ERROR__ROUND_ALREADY_SETTLED = 6048;
|
|
8435
|
+
var ACCORD_ERROR__ROUND_NOT_SETTLABLE = 6049;
|
|
8436
|
+
var ACCORD_ERROR__DISPUTE_FAILED = 6050;
|
|
8437
|
+
var ACCORD_ERROR__CANCEL_TOO_EARLY = 6051;
|
|
8438
|
+
var ACCORD_ERROR__MAX_RETRIES_EXCEEDED = 6052;
|
|
8439
|
+
var ACCORD_ERROR__NO_FEES_EARNED = 6053;
|
|
8440
|
+
var ACCORD_ERROR__NOT_REDRAW_ELIGIBLE = 6054;
|
|
8441
|
+
var ACCORD_ERROR__MAX_DRAW_ATTEMPTS_LIMIT_EXCEEDED = 6055;
|
|
8442
|
+
var ACCORD_ERROR__INVALID_THRESHOLD = 6056;
|
|
8443
|
+
var ACCORD_ERROR__ATTESTATION_MISSING = 6057;
|
|
8444
|
+
var ACCORD_ERROR__ATTESTATION_BINDING_PARTIAL = 6058;
|
|
8445
|
+
var ACCORD_ERROR__ATTESTATION_MALFORMED = 6059;
|
|
8446
|
+
var ACCORD_ERROR__ATTESTATION_MISMATCH = 6060;
|
|
8447
|
+
var ACCORD_ERROR__ATTESTATION_SUBJECT_MISMATCH = 6061;
|
|
8448
|
+
var ACCORD_ERROR__ATTESTATION_EXPIRED = 6062;
|
|
8449
|
+
var ACCORD_ERROR__ATTESTATION_NOT_EXPIRED = 6063;
|
|
8450
|
+
var ACCORD_ERROR__SLOT_NOT_DRAINED = 6064;
|
|
8451
|
+
var ACCORD_ERROR__SLOT_ALREADY_RECLAIMED = 6065;
|
|
8452
|
+
var ACCORD_ERROR__FREE_LIST_HEAD_MISMATCH = 6066;
|
|
8453
|
+
var ACCORD_ERROR__SLOT_AWAITING_RECYCLE = 6067;
|
|
8454
|
+
var ACCORD_ERROR__EVEN_JURY_SIZE = 6068;
|
|
8455
|
+
var ACCORD_ERROR__LADDER_EXCEEDS_MAX_JURORS = 6069;
|
|
8456
|
+
var ACCORD_ERROR__FEE_DOMINATES_SLASH = 6070;
|
|
8457
|
+
var accordErrorMessages;
|
|
8458
|
+
if (process.env["NODE_ENV"] !== "production") {
|
|
8459
|
+
accordErrorMessages = {
|
|
8460
|
+
[ACCORD_ERROR__ALREADY_PAUSED]: `Program is already paused.`,
|
|
8461
|
+
[ACCORD_ERROR__ALREADY_REVEALED]: `Juror has already revealed.`,
|
|
8462
|
+
[ACCORD_ERROR__APPEAL_WINDOW_CLOSED]: `Appeal window has closed; the dispute can only be finalized.`,
|
|
8463
|
+
[ACCORD_ERROR__APPEAL_WINDOW_OPEN]: `Appeal window has not elapsed yet.`,
|
|
8464
|
+
[ACCORD_ERROR__APPEAL_WINDOW_TOO_SHORT]: `Appeal window is below the per-Subaccord floor (MIN_APPEAL_WINDOW_SECS).`,
|
|
8465
|
+
[ACCORD_ERROR__ARITHMETIC_OVERFLOW]: `Arithmetic overflow.`,
|
|
8466
|
+
[ACCORD_ERROR__ATTESTATION_BINDING_PARTIAL]: `Credential and schema must be set together (both-or-neither).`,
|
|
8467
|
+
[ACCORD_ERROR__ATTESTATION_EXPIRED]: `Attestation has expired or will expire before the dispute lifecycle completes.`,
|
|
8468
|
+
[ACCORD_ERROR__ATTESTATION_MALFORMED]: `Attestation account is malformed (wrong owner, discriminator, or too short).`,
|
|
8469
|
+
[ACCORD_ERROR__ATTESTATION_MISMATCH]: `Attestation credential or schema does not match the Subaccord binding.`,
|
|
8470
|
+
[ACCORD_ERROR__ATTESTATION_MISSING]: `Subaccord is credential-gated but no attestation account was provided.`,
|
|
8471
|
+
[ACCORD_ERROR__ATTESTATION_NOT_EXPIRED]: `Attestation has not expired; prune_juror requires an actually-expired credential.`,
|
|
8472
|
+
[ACCORD_ERROR__ATTESTATION_SUBJECT_MISMATCH]: `Attestation subject wallet does not match the juror.`,
|
|
8473
|
+
[ACCORD_ERROR__CANCEL_TOO_EARLY]: `Dispute has not exceeded its stage timeout; cancel_dispute is not yet available.`,
|
|
8474
|
+
[ACCORD_ERROR__COMMIT_ALREADY_EXISTS]: `Juror has already committed.`,
|
|
8475
|
+
[ACCORD_ERROR__COMMIT_MISSING]: `No commit to reveal for this Juror.`,
|
|
8476
|
+
[ACCORD_ERROR__COMMIT_WINDOW_CLOSED]: `Commit window is closed.`,
|
|
8477
|
+
[ACCORD_ERROR__DISPUTE_FAILED]: `Dispute is in terminal Failed state.`,
|
|
8478
|
+
[ACCORD_ERROR__DISPUTE_NOT_FINAL]: `Dispute is not in a finalizable state.`,
|
|
8479
|
+
[ACCORD_ERROR__DUPLICATE_JUROR]: `Draw selected a duplicate Juror.`,
|
|
8480
|
+
[ACCORD_ERROR__EVEN_JURY_SIZE]: `Round-1 jury size (min_jury_size) must be odd (tie avoidance).`,
|
|
8481
|
+
[ACCORD_ERROR__FEE_DOMINATES_SLASH]: `Same-mint pool is fee-dominated: alpha_bps\xB7min_stake/10_000 must cover MIN_SLASH_FEE_RATIO\xB7fee_per_juror.`,
|
|
8482
|
+
[ACCORD_ERROR__FEE_MISMATCH]: `Tendered fee does not match the required round-1 dispute fee (min_jury_size * fee_per_juror).`,
|
|
8483
|
+
[ACCORD_ERROR__FREE_LIST_HEAD_MISMATCH]: `Provided freed-slot account does not match the free-list head.`,
|
|
8484
|
+
[ACCORD_ERROR__IMMUTABLE_SUBACCORD]: `Subaccord is immutable (authority == default).`,
|
|
8485
|
+
[ACCORD_ERROR__INFLATED_STAKE]: `Drawn juror's live stake is below the accumulator leaf's claim (inflation guard, ADR-0012).`,
|
|
8486
|
+
[ACCORD_ERROR__INSUFFICIENT_BALANCE]: `Withdrawal exceeds the Juror's free stake (amount - slash_reserve).`,
|
|
8487
|
+
[ACCORD_ERROR__INSUFFICIENT_JURORS]: `Subaccord has fewer active distinct stakers than the required panel size.`,
|
|
8488
|
+
[ACCORD_ERROR__INSUFFICIENT_STAKE]: `Staked amount is below the Subaccord minimum.`,
|
|
8489
|
+
[ACCORD_ERROR__INVALID_AMOUNT]: `Amount must be greater than zero.`,
|
|
8490
|
+
[ACCORD_ERROR__INVALID_MEMBERSHIP_PROOF]: `Juror Merkle membership/weight proof is invalid.`,
|
|
8491
|
+
[ACCORD_ERROR__INVALID_MERKLE_PATH]: `Accumulator Merkle path does not authenticate against the stored root.`,
|
|
8492
|
+
[ACCORD_ERROR__INVALID_OPTIONS]: `Dispute options are invalid (need 2..=MAX_OPTIONS).`,
|
|
8493
|
+
[ACCORD_ERROR__INVALID_PANEL_SIZE]: `Number of juror memberships does not match the required panel size.`,
|
|
8494
|
+
[ACCORD_ERROR__INVALID_STATE]: `Dispute is not in the required state for this instruction.`,
|
|
8495
|
+
[ACCORD_ERROR__INVALID_THRESHOLD]: `Basis-point value out of range (must be <= 10_000; reveal threshold or alpha).`,
|
|
8496
|
+
[ACCORD_ERROR__INVALID_VOTE]: `Revealed vote index is out of range.`,
|
|
8497
|
+
[ACCORD_ERROR__LADDER_EXCEEDS_MAX_JURORS]: `The appeal ladder (min_jury_size, max_appeals) exceeds MAX_JURORS at its top round.`,
|
|
8498
|
+
[ACCORD_ERROR__MAX_APPEALS_LIMIT_EXCEEDED]: `Subaccord max_appeals exceeds the program ceiling.`,
|
|
8499
|
+
[ACCORD_ERROR__MAX_APPEALS_REACHED]: `Maximum appeals reached for this dispute.`,
|
|
8500
|
+
[ACCORD_ERROR__MAX_DRAW_ATTEMPTS_LIMIT_EXCEEDED]: `Subaccord max_draw_attempts exceeds the program ceiling.`,
|
|
8501
|
+
[ACCORD_ERROR__MAX_RETRIES_EXCEEDED]: `Sortition retries exceeded the on-chain bound; the pool may be too concentrated.`,
|
|
8502
|
+
[ACCORD_ERROR__NO_FEES_EARNED]: `Juror has no earned fees to withdraw.`,
|
|
8503
|
+
[ACCORD_ERROR__NO_PENDING_UNPAUSE]: `No pending unpause to execute.`,
|
|
8504
|
+
[ACCORD_ERROR__NO_PENDING_UPDATE]: `No pending update to execute.`,
|
|
8505
|
+
[ACCORD_ERROR__NO_PENDING_WITHDRAWAL]: `No pending withdrawal to execute.`,
|
|
8506
|
+
[ACCORD_ERROR__NOT_DRAWN_JUROR]: `Signer is not a drawn Juror for this round.`,
|
|
8507
|
+
[ACCORD_ERROR__NOT_PAUSE_AUTHORITY]: `Signer is not the pause authority.`,
|
|
8508
|
+
[ACCORD_ERROR__NOT_PAUSED]: `Program is not paused.`,
|
|
8509
|
+
[ACCORD_ERROR__NOT_REDRAW_ELIGIBLE]: `Dispute is not in RedrawEligible state; redraw is not available.`,
|
|
8510
|
+
[ACCORD_ERROR__PENDING_SETTLEMENT]: `Settle pending reward/slash first: call reconcile_stake before request_withdraw.`,
|
|
8511
|
+
[ACCORD_ERROR__PROGRAM_PAUSED]: `Program is paused; this instruction is halted.`,
|
|
8512
|
+
[ACCORD_ERROR__REVEAL_MISMATCH]: `Reveal does not match the committed hash.`,
|
|
8513
|
+
[ACCORD_ERROR__REVEAL_WINDOW_CLOSED]: `Reveal window is closed.`,
|
|
8514
|
+
[ACCORD_ERROR__ROUND_ALREADY_SETTLED]: `Round has already been settled.`,
|
|
8515
|
+
[ACCORD_ERROR__ROUND_NOT_FINALIZABLE]: `Round cannot be finalized yet (window not elapsed).`,
|
|
8516
|
+
[ACCORD_ERROR__ROUND_NOT_SETTLABLE]: `Round index out of range for settlement (must be < current_round).`,
|
|
8517
|
+
[ACCORD_ERROR__SLOT_ALREADY_RECLAIMED]: `JurorStake slot is already on the free list (next_free != MAX).`,
|
|
8518
|
+
[ACCORD_ERROR__SLOT_AWAITING_RECYCLE]: `Juror's tree slot was reclaimed and sits mid-free-list; retry once the slots ahead of it are recycled.`,
|
|
8519
|
+
[ACCORD_ERROR__SLOT_NOT_DRAINED]: `JurorStake is not fully drained (staked, active_draws, stake_delta, or fees_earned > 0).`,
|
|
8520
|
+
[ACCORD_ERROR__SORTITION_MISMATCH]: `Submitted membership does not match the VRF-derived sortition selection (ADR-0009).`,
|
|
8521
|
+
[ACCORD_ERROR__STAKE_LOCKED]: `Cannot unstake while active_draws > 0 (stake is frozen until drawn disputes settle).`,
|
|
8522
|
+
[ACCORD_ERROR__SUBACCORD_MISMATCH]: `Dispute does not belong to this Subaccord (cross-pool substitution rejected).`,
|
|
8523
|
+
[ACCORD_ERROR__TIMELOCK_NOT_ELAPSED]: `Timelock has not elapsed yet.`,
|
|
8524
|
+
[ACCORD_ERROR__TREE_FULL]: `Accumulator tree is full (no free leaf within the configured depth).`,
|
|
8525
|
+
[ACCORD_ERROR__UNAUTHORIZED]: `Signer is not the Subaccord authority.`,
|
|
8526
|
+
[ACCORD_ERROR__UNPAUSE_TIMELOCK_NOT_ELAPSED]: `Unpause timelock has not elapsed yet.`,
|
|
8527
|
+
[ACCORD_ERROR__VRF_ALREADY_COMMITTED]: `VRF result already committed for this dispute.`,
|
|
8528
|
+
[ACCORD_ERROR__VRF_NOT_COMMITTED]: `No VRF result committed for this dispute; the root is not yet frozen.`,
|
|
8529
|
+
[ACCORD_ERROR__WITHDRAWAL_PENDING]: `A withdrawal is already pending \u2014 complete it via withdraw before requesting another.`,
|
|
8530
|
+
[ACCORD_ERROR__WITHDRAWAL_TOO_EARLY]: `Withdrawal timelock has not elapsed yet.`
|
|
8531
|
+
};
|
|
8532
|
+
}
|
|
8533
|
+
|
|
8274
8534
|
// src/errors.ts
|
|
8275
8535
|
var ACCORD_ERROR_CODE_OFFSET = 6e3;
|
|
8276
8536
|
function err(code, name, message) {
|
|
8277
8537
|
return { code, name, message };
|
|
8278
8538
|
}
|
|
8279
8539
|
__name(err, "err");
|
|
8280
|
-
var BASE = ACCORD_ERROR_CODE_OFFSET;
|
|
8281
8540
|
var AccordErrors = {
|
|
8282
|
-
|
|
8283
|
-
|
|
8284
|
-
|
|
8285
|
-
|
|
8286
|
-
|
|
8287
|
-
),
|
|
8288
|
-
|
|
8289
|
-
|
|
8290
|
-
|
|
8291
|
-
|
|
8292
|
-
),
|
|
8293
|
-
|
|
8294
|
-
|
|
8295
|
-
|
|
8296
|
-
|
|
8297
|
-
),
|
|
8298
|
-
|
|
8299
|
-
|
|
8300
|
-
|
|
8301
|
-
|
|
8302
|
-
),
|
|
8303
|
-
|
|
8304
|
-
|
|
8305
|
-
|
|
8306
|
-
|
|
8307
|
-
|
|
8308
|
-
),
|
|
8309
|
-
|
|
8310
|
-
|
|
8311
|
-
|
|
8312
|
-
|
|
8313
|
-
|
|
8314
|
-
|
|
8315
|
-
),
|
|
8316
|
-
|
|
8317
|
-
|
|
8318
|
-
|
|
8319
|
-
|
|
8320
|
-
),
|
|
8321
|
-
|
|
8322
|
-
|
|
8323
|
-
|
|
8324
|
-
|
|
8325
|
-
),
|
|
8326
|
-
|
|
8327
|
-
|
|
8328
|
-
|
|
8329
|
-
|
|
8330
|
-
|
|
8331
|
-
),
|
|
8332
|
-
|
|
8333
|
-
|
|
8334
|
-
|
|
8335
|
-
|
|
8336
|
-
),
|
|
8337
|
-
|
|
8338
|
-
|
|
8339
|
-
|
|
8340
|
-
|
|
8341
|
-
),
|
|
8342
|
-
|
|
8343
|
-
|
|
8344
|
-
|
|
8345
|
-
|
|
8346
|
-
),
|
|
8347
|
-
|
|
8348
|
-
|
|
8349
|
-
|
|
8350
|
-
|
|
8351
|
-
|
|
8352
|
-
)
|
|
8353
|
-
InvalidOptions: err(
|
|
8354
|
-
BASE + 15,
|
|
8355
|
-
"InvalidOptions",
|
|
8356
|
-
"Dispute options are invalid (need 2..=MAX_OPTIONS)."
|
|
8357
|
-
),
|
|
8358
|
-
InvalidState: err(
|
|
8359
|
-
BASE + 16,
|
|
8360
|
-
"InvalidState",
|
|
8361
|
-
"Dispute is not in the required state for this instruction."
|
|
8362
|
-
),
|
|
8363
|
-
FeeMismatch: err(
|
|
8364
|
-
BASE + 17,
|
|
8365
|
-
"FeeMismatch",
|
|
8366
|
-
"Tendered fee does not match the required round-1 dispute fee (min_jury_size * fee_per_juror)."
|
|
8367
|
-
),
|
|
8368
|
-
// --- accumulator (ADR-0012) ---
|
|
8369
|
-
InvalidMerklePath: err(
|
|
8370
|
-
BASE + 18,
|
|
8371
|
-
"InvalidMerklePath",
|
|
8372
|
-
"Accumulator Merkle path does not authenticate against the stored root."
|
|
8373
|
-
),
|
|
8374
|
-
TreeFull: err(
|
|
8375
|
-
BASE + 19,
|
|
8376
|
-
"TreeFull",
|
|
8377
|
-
"Accumulator tree is full (no free leaf within the configured depth)."
|
|
8378
|
-
),
|
|
8379
|
-
// --- draw ---
|
|
8380
|
-
DuplicateJuror: err(
|
|
8381
|
-
BASE + 20,
|
|
8382
|
-
"DuplicateJuror",
|
|
8383
|
-
"Draw selected a duplicate Juror."
|
|
8384
|
-
),
|
|
8385
|
-
InvalidMembershipProof: err(
|
|
8386
|
-
BASE + 21,
|
|
8387
|
-
"InvalidMembershipProof",
|
|
8388
|
-
"Juror Merkle membership/weight proof is invalid."
|
|
8389
|
-
),
|
|
8390
|
-
InvalidPanelSize: err(
|
|
8391
|
-
BASE + 22,
|
|
8392
|
-
"InvalidPanelSize",
|
|
8393
|
-
"Number of juror memberships does not match the required panel size."
|
|
8394
|
-
),
|
|
8395
|
-
InflatedStake: err(
|
|
8396
|
-
BASE + 23,
|
|
8397
|
-
"InflatedStake",
|
|
8398
|
-
"Drawn juror's live stake is below the accumulator leaf's claim (inflation guard, ADR-0012)."
|
|
8399
|
-
),
|
|
8400
|
-
SortitionMismatch: err(
|
|
8401
|
-
BASE + 24,
|
|
8402
|
-
"SortitionMismatch",
|
|
8403
|
-
"Submitted membership does not match the VRF-derived sortition selection (ADR-0009)."
|
|
8404
|
-
),
|
|
8405
|
-
VrfAlreadyCommitted: err(
|
|
8406
|
-
BASE + 25,
|
|
8407
|
-
"VrfAlreadyCommitted",
|
|
8408
|
-
"VRF result already committed for this dispute."
|
|
8409
|
-
),
|
|
8410
|
-
VrfNotCommitted: err(
|
|
8411
|
-
BASE + 26,
|
|
8412
|
-
"VrfNotCommitted",
|
|
8413
|
-
"No VRF result committed for this dispute; the root is not yet frozen."
|
|
8414
|
-
),
|
|
8415
|
-
// --- voting ---
|
|
8416
|
-
CommitAlreadyExists: err(
|
|
8417
|
-
BASE + 27,
|
|
8418
|
-
"CommitAlreadyExists",
|
|
8419
|
-
"Juror has already committed."
|
|
8420
|
-
),
|
|
8421
|
-
CommitMissing: err(
|
|
8422
|
-
BASE + 28,
|
|
8423
|
-
"CommitMissing",
|
|
8424
|
-
"No commit to reveal for this Juror."
|
|
8425
|
-
),
|
|
8426
|
-
RevealMismatch: err(
|
|
8427
|
-
BASE + 29,
|
|
8428
|
-
"RevealMismatch",
|
|
8429
|
-
"Reveal does not match the committed hash."
|
|
8430
|
-
),
|
|
8431
|
-
CommitWindowClosed: err(
|
|
8432
|
-
BASE + 30,
|
|
8433
|
-
"CommitWindowClosed",
|
|
8434
|
-
"Commit window is closed."
|
|
8435
|
-
),
|
|
8436
|
-
RevealWindowClosed: err(
|
|
8437
|
-
BASE + 31,
|
|
8438
|
-
"RevealWindowClosed",
|
|
8439
|
-
"Reveal window is closed."
|
|
8440
|
-
),
|
|
8441
|
-
NotDrawnJuror: err(
|
|
8442
|
-
BASE + 32,
|
|
8443
|
-
"NotDrawnJuror",
|
|
8444
|
-
"Signer is not a drawn Juror for this round."
|
|
8445
|
-
),
|
|
8446
|
-
InvalidVote: err(
|
|
8447
|
-
BASE + 33,
|
|
8448
|
-
"InvalidVote",
|
|
8449
|
-
"Revealed vote index is out of range."
|
|
8450
|
-
),
|
|
8451
|
-
AlreadyRevealed: err(
|
|
8452
|
-
BASE + 34,
|
|
8453
|
-
"AlreadyRevealed",
|
|
8454
|
-
"Juror has already revealed."
|
|
8455
|
-
),
|
|
8456
|
-
// --- finalization ---
|
|
8457
|
-
AppealWindowOpen: err(
|
|
8458
|
-
BASE + 35,
|
|
8459
|
-
"AppealWindowOpen",
|
|
8460
|
-
"Appeal window has not elapsed yet."
|
|
8461
|
-
),
|
|
8462
|
-
// --- appeals (ADR-0004) ---
|
|
8463
|
-
MaxAppealsReached: err(
|
|
8464
|
-
BASE + 36,
|
|
8465
|
-
"MaxAppealsReached",
|
|
8466
|
-
"Maximum appeals reached for this dispute."
|
|
8467
|
-
),
|
|
8468
|
-
MaxAppealsLimitExceeded: err(
|
|
8469
|
-
BASE + 37,
|
|
8470
|
-
"MaxAppealsLimitExceeded",
|
|
8471
|
-
"Subaccord max_appeals exceeds the program ceiling."
|
|
8472
|
-
),
|
|
8473
|
-
AppealWindowClosed: err(
|
|
8474
|
-
BASE + 38,
|
|
8475
|
-
"AppealWindowClosed",
|
|
8476
|
-
"Appeal window has closed; the dispute can only be finalized."
|
|
8477
|
-
),
|
|
8478
|
-
// --- finalization ---
|
|
8479
|
-
RoundNotFinalizable: err(
|
|
8480
|
-
BASE + 39,
|
|
8481
|
-
"RoundNotFinalizable",
|
|
8482
|
-
"Round cannot be finalized yet (window not elapsed)."
|
|
8483
|
-
),
|
|
8484
|
-
DisputeNotFinal: err(
|
|
8485
|
-
BASE + 40,
|
|
8486
|
-
"DisputeNotFinal",
|
|
8487
|
-
"Dispute is not in a finalizable state."
|
|
8488
|
-
),
|
|
8489
|
-
// --- arithmetic ---
|
|
8490
|
-
ArithmeticOverflow: err(
|
|
8491
|
-
BASE + 41,
|
|
8492
|
-
"ArithmeticOverflow",
|
|
8493
|
-
"Arithmetic overflow."
|
|
8494
|
-
),
|
|
8495
|
-
// --- multi-round settlement (CONCEPT-REVIEW Ugly 5 / accord-r6ti) ---
|
|
8496
|
-
RoundAlreadySettled: err(
|
|
8497
|
-
BASE + 42,
|
|
8498
|
-
"RoundAlreadySettled",
|
|
8499
|
-
"Round has already been settled."
|
|
8500
|
-
),
|
|
8501
|
-
RoundNotSettlable: err(
|
|
8502
|
-
BASE + 43,
|
|
8503
|
-
"RoundNotSettlable",
|
|
8504
|
-
"Round index out of range for settlement (must be < current_round)."
|
|
8505
|
-
),
|
|
8506
|
-
// --- cancel / Failed state (Ugly 4) ---
|
|
8507
|
-
DisputeFailed: err(
|
|
8508
|
-
BASE + 44,
|
|
8509
|
-
"DisputeFailed",
|
|
8510
|
-
"Dispute is in terminal Failed state."
|
|
8511
|
-
),
|
|
8512
|
-
CancelTooEarly: err(
|
|
8513
|
-
BASE + 45,
|
|
8514
|
-
"CancelTooEarly",
|
|
8515
|
-
"Dispute has not exceeded its stage timeout; cancel_dispute is not yet available."
|
|
8516
|
-
),
|
|
8517
|
-
// --- draw (bean accord-tzo0) ---
|
|
8518
|
-
MaxRetriesExceeded: err(
|
|
8519
|
-
BASE + 46,
|
|
8520
|
-
"MaxRetriesExceeded",
|
|
8521
|
-
"Sortition retries exceeded the on-chain bound; the pool may be too concentrated."
|
|
8522
|
-
)
|
|
8541
|
+
Unauthorized: err(ACCORD_ERROR__UNAUTHORIZED, "Unauthorized", "Signer is not the Subaccord authority."),
|
|
8542
|
+
SubaccordMismatch: err(ACCORD_ERROR__SUBACCORD_MISMATCH, "SubaccordMismatch", "Dispute does not belong to this Subaccord (cross-pool substitution rejected)."),
|
|
8543
|
+
ImmutableSubaccord: err(ACCORD_ERROR__IMMUTABLE_SUBACCORD, "ImmutableSubaccord", "Subaccord is immutable (authority == default)."),
|
|
8544
|
+
TimelockNotElapsed: err(ACCORD_ERROR__TIMELOCK_NOT_ELAPSED, "TimelockNotElapsed", "Timelock has not elapsed yet."),
|
|
8545
|
+
NoPendingUpdate: err(ACCORD_ERROR__NO_PENDING_UPDATE, "NoPendingUpdate", "No pending update to execute."),
|
|
8546
|
+
NotPauseAuthority: err(ACCORD_ERROR__NOT_PAUSE_AUTHORITY, "NotPauseAuthority", "Signer is not the pause authority."),
|
|
8547
|
+
AlreadyPaused: err(ACCORD_ERROR__ALREADY_PAUSED, "AlreadyPaused", "Program is already paused."),
|
|
8548
|
+
NotPaused: err(ACCORD_ERROR__NOT_PAUSED, "NotPaused", "Program is not paused."),
|
|
8549
|
+
NoPendingUnpause: err(ACCORD_ERROR__NO_PENDING_UNPAUSE, "NoPendingUnpause", "No pending unpause to execute."),
|
|
8550
|
+
UnpauseTimelockNotElapsed: err(ACCORD_ERROR__UNPAUSE_TIMELOCK_NOT_ELAPSED, "UnpauseTimelockNotElapsed", "Unpause timelock has not elapsed yet."),
|
|
8551
|
+
ProgramPaused: err(ACCORD_ERROR__PROGRAM_PAUSED, "ProgramPaused", "Program is paused; this instruction is halted."),
|
|
8552
|
+
InsufficientStake: err(ACCORD_ERROR__INSUFFICIENT_STAKE, "InsufficientStake", "Staked amount is below the Subaccord minimum."),
|
|
8553
|
+
StakeLocked: err(ACCORD_ERROR__STAKE_LOCKED, "StakeLocked", "Cannot unstake while active_draws > 0 (stake is frozen until drawn disputes settle)."),
|
|
8554
|
+
InvalidAmount: err(ACCORD_ERROR__INVALID_AMOUNT, "InvalidAmount", "Amount must be greater than zero."),
|
|
8555
|
+
WithdrawalTooEarly: err(ACCORD_ERROR__WITHDRAWAL_TOO_EARLY, "WithdrawalTooEarly", "Withdrawal timelock has not elapsed yet."),
|
|
8556
|
+
NoPendingWithdrawal: err(ACCORD_ERROR__NO_PENDING_WITHDRAWAL, "NoPendingWithdrawal", "No pending withdrawal to execute."),
|
|
8557
|
+
InsufficientBalance: err(ACCORD_ERROR__INSUFFICIENT_BALANCE, "InsufficientBalance", "Withdrawal exceeds the Juror's free stake (amount - slash_reserve)."),
|
|
8558
|
+
PendingSettlement: err(ACCORD_ERROR__PENDING_SETTLEMENT, "PendingSettlement", "Settle pending reward/slash first: call reconcile_stake before request_withdraw."),
|
|
8559
|
+
WithdrawalPending: err(ACCORD_ERROR__WITHDRAWAL_PENDING, "WithdrawalPending", "A withdrawal is already pending \u2014 complete it via withdraw before requesting another."),
|
|
8560
|
+
InsufficientJurors: err(ACCORD_ERROR__INSUFFICIENT_JURORS, "InsufficientJurors", "Subaccord has fewer active distinct stakers than the required panel size."),
|
|
8561
|
+
InvalidOptions: err(ACCORD_ERROR__INVALID_OPTIONS, "InvalidOptions", "Dispute options are invalid (need 2..=MAX_OPTIONS)."),
|
|
8562
|
+
InvalidState: err(ACCORD_ERROR__INVALID_STATE, "InvalidState", "Dispute is not in the required state for this instruction."),
|
|
8563
|
+
FeeMismatch: err(ACCORD_ERROR__FEE_MISMATCH, "FeeMismatch", "Tendered fee does not match the required round-1 dispute fee (min_jury_size * fee_per_juror)."),
|
|
8564
|
+
InvalidMerklePath: err(ACCORD_ERROR__INVALID_MERKLE_PATH, "InvalidMerklePath", "Accumulator Merkle path does not authenticate against the stored root."),
|
|
8565
|
+
TreeFull: err(ACCORD_ERROR__TREE_FULL, "TreeFull", "Accumulator tree is full (no free leaf within the configured depth)."),
|
|
8566
|
+
DuplicateJuror: err(ACCORD_ERROR__DUPLICATE_JUROR, "DuplicateJuror", "Draw selected a duplicate Juror."),
|
|
8567
|
+
InvalidMembershipProof: err(ACCORD_ERROR__INVALID_MEMBERSHIP_PROOF, "InvalidMembershipProof", "Juror Merkle membership/weight proof is invalid."),
|
|
8568
|
+
InvalidPanelSize: err(ACCORD_ERROR__INVALID_PANEL_SIZE, "InvalidPanelSize", "Number of juror memberships does not match the required panel size."),
|
|
8569
|
+
InflatedStake: err(ACCORD_ERROR__INFLATED_STAKE, "InflatedStake", "Drawn juror's live stake is below the accumulator leaf's claim (inflation guard, ADR-0012)."),
|
|
8570
|
+
SortitionMismatch: err(ACCORD_ERROR__SORTITION_MISMATCH, "SortitionMismatch", "Submitted membership does not match the VRF-derived sortition selection (ADR-0009)."),
|
|
8571
|
+
VrfAlreadyCommitted: err(ACCORD_ERROR__VRF_ALREADY_COMMITTED, "VrfAlreadyCommitted", "VRF result already committed for this dispute."),
|
|
8572
|
+
VrfNotCommitted: err(ACCORD_ERROR__VRF_NOT_COMMITTED, "VrfNotCommitted", "No VRF result committed for this dispute; the root is not yet frozen."),
|
|
8573
|
+
CommitAlreadyExists: err(ACCORD_ERROR__COMMIT_ALREADY_EXISTS, "CommitAlreadyExists", "Juror has already committed."),
|
|
8574
|
+
CommitMissing: err(ACCORD_ERROR__COMMIT_MISSING, "CommitMissing", "No commit to reveal for this Juror."),
|
|
8575
|
+
RevealMismatch: err(ACCORD_ERROR__REVEAL_MISMATCH, "RevealMismatch", "Reveal does not match the committed hash."),
|
|
8576
|
+
CommitWindowClosed: err(ACCORD_ERROR__COMMIT_WINDOW_CLOSED, "CommitWindowClosed", "Commit window is closed."),
|
|
8577
|
+
RevealWindowClosed: err(ACCORD_ERROR__REVEAL_WINDOW_CLOSED, "RevealWindowClosed", "Reveal window is closed."),
|
|
8578
|
+
NotDrawnJuror: err(ACCORD_ERROR__NOT_DRAWN_JUROR, "NotDrawnJuror", "Signer is not a drawn Juror for this round."),
|
|
8579
|
+
InvalidVote: err(ACCORD_ERROR__INVALID_VOTE, "InvalidVote", "Revealed vote index is out of range."),
|
|
8580
|
+
AlreadyRevealed: err(ACCORD_ERROR__ALREADY_REVEALED, "AlreadyRevealed", "Juror has already revealed."),
|
|
8581
|
+
AppealWindowOpen: err(ACCORD_ERROR__APPEAL_WINDOW_OPEN, "AppealWindowOpen", "Appeal window has not elapsed yet."),
|
|
8582
|
+
MaxAppealsReached: err(ACCORD_ERROR__MAX_APPEALS_REACHED, "MaxAppealsReached", "Maximum appeals reached for this dispute."),
|
|
8583
|
+
MaxAppealsLimitExceeded: err(ACCORD_ERROR__MAX_APPEALS_LIMIT_EXCEEDED, "MaxAppealsLimitExceeded", "Subaccord max_appeals exceeds the program ceiling."),
|
|
8584
|
+
AppealWindowClosed: err(ACCORD_ERROR__APPEAL_WINDOW_CLOSED, "AppealWindowClosed", "Appeal window has closed; the dispute can only be finalized."),
|
|
8585
|
+
AppealWindowTooShort: err(ACCORD_ERROR__APPEAL_WINDOW_TOO_SHORT, "AppealWindowTooShort", "Appeal window is below the per-Subaccord floor (MIN_APPEAL_WINDOW_SECS)."),
|
|
8586
|
+
RoundNotFinalizable: err(ACCORD_ERROR__ROUND_NOT_FINALIZABLE, "RoundNotFinalizable", "Round cannot be finalized yet (window not elapsed)."),
|
|
8587
|
+
DisputeNotFinal: err(ACCORD_ERROR__DISPUTE_NOT_FINAL, "DisputeNotFinal", "Dispute is not in a finalizable state."),
|
|
8588
|
+
ArithmeticOverflow: err(ACCORD_ERROR__ARITHMETIC_OVERFLOW, "ArithmeticOverflow", "Arithmetic overflow."),
|
|
8589
|
+
RoundAlreadySettled: err(ACCORD_ERROR__ROUND_ALREADY_SETTLED, "RoundAlreadySettled", "Round has already been settled."),
|
|
8590
|
+
RoundNotSettlable: err(ACCORD_ERROR__ROUND_NOT_SETTLABLE, "RoundNotSettlable", "Round index out of range for settlement (must be < current_round)."),
|
|
8591
|
+
DisputeFailed: err(ACCORD_ERROR__DISPUTE_FAILED, "DisputeFailed", "Dispute is in terminal Failed state."),
|
|
8592
|
+
CancelTooEarly: err(ACCORD_ERROR__CANCEL_TOO_EARLY, "CancelTooEarly", "Dispute has not exceeded its stage timeout; cancel_dispute is not yet available."),
|
|
8593
|
+
MaxRetriesExceeded: err(ACCORD_ERROR__MAX_RETRIES_EXCEEDED, "MaxRetriesExceeded", "Sortition retries exceeded the on-chain bound; the pool may be too concentrated."),
|
|
8594
|
+
NoFeesEarned: err(ACCORD_ERROR__NO_FEES_EARNED, "NoFeesEarned", "Juror has no earned fees to withdraw."),
|
|
8595
|
+
NotRedrawEligible: err(ACCORD_ERROR__NOT_REDRAW_ELIGIBLE, "NotRedrawEligible", "Dispute is not in RedrawEligible state; redraw is not available."),
|
|
8596
|
+
MaxDrawAttemptsLimitExceeded: err(ACCORD_ERROR__MAX_DRAW_ATTEMPTS_LIMIT_EXCEEDED, "MaxDrawAttemptsLimitExceeded", "Subaccord max_draw_attempts exceeds the program ceiling."),
|
|
8597
|
+
InvalidThreshold: err(ACCORD_ERROR__INVALID_THRESHOLD, "InvalidThreshold", "Basis-point value out of range (must be <= 10_000; reveal threshold or alpha)."),
|
|
8598
|
+
AttestationMissing: err(ACCORD_ERROR__ATTESTATION_MISSING, "AttestationMissing", "Subaccord is credential-gated but no attestation account was provided."),
|
|
8599
|
+
AttestationBindingPartial: err(ACCORD_ERROR__ATTESTATION_BINDING_PARTIAL, "AttestationBindingPartial", "Credential and schema must be set together (both-or-neither)."),
|
|
8600
|
+
AttestationMalformed: err(ACCORD_ERROR__ATTESTATION_MALFORMED, "AttestationMalformed", "Attestation account is malformed (wrong owner, discriminator, or too short)."),
|
|
8601
|
+
AttestationMismatch: err(ACCORD_ERROR__ATTESTATION_MISMATCH, "AttestationMismatch", "Attestation credential or schema does not match the Subaccord binding."),
|
|
8602
|
+
AttestationSubjectMismatch: err(ACCORD_ERROR__ATTESTATION_SUBJECT_MISMATCH, "AttestationSubjectMismatch", "Attestation subject wallet does not match the juror."),
|
|
8603
|
+
AttestationExpired: err(ACCORD_ERROR__ATTESTATION_EXPIRED, "AttestationExpired", "Attestation has expired or will expire before the dispute lifecycle completes."),
|
|
8604
|
+
AttestationNotExpired: err(ACCORD_ERROR__ATTESTATION_NOT_EXPIRED, "AttestationNotExpired", "Attestation has not expired; prune_juror requires an actually-expired credential."),
|
|
8605
|
+
SlotNotDrained: err(ACCORD_ERROR__SLOT_NOT_DRAINED, "SlotNotDrained", "JurorStake is not fully drained (staked, active_draws, stake_delta, or fees_earned > 0)."),
|
|
8606
|
+
SlotAlreadyReclaimed: err(ACCORD_ERROR__SLOT_ALREADY_RECLAIMED, "SlotAlreadyReclaimed", "JurorStake slot is already on the free list (next_free != MAX)."),
|
|
8607
|
+
FreeListHeadMismatch: err(ACCORD_ERROR__FREE_LIST_HEAD_MISMATCH, "FreeListHeadMismatch", "Provided freed-slot account does not match the free-list head."),
|
|
8608
|
+
SlotAwaitingRecycle: err(ACCORD_ERROR__SLOT_AWAITING_RECYCLE, "SlotAwaitingRecycle", "Juror's tree slot was reclaimed and sits mid-free-list; retry once the slots ahead of it are recycled."),
|
|
8609
|
+
EvenJurySize: err(ACCORD_ERROR__EVEN_JURY_SIZE, "EvenJurySize", "Round-1 jury size (min_jury_size) must be odd (tie avoidance)."),
|
|
8610
|
+
LadderExceedsMaxJurors: err(ACCORD_ERROR__LADDER_EXCEEDS_MAX_JURORS, "LadderExceedsMaxJurors", "The appeal ladder (min_jury_size, max_appeals) exceeds MAX_JURORS at its top round."),
|
|
8611
|
+
FeeDominatesSlash: err(ACCORD_ERROR__FEE_DOMINATES_SLASH, "FeeDominatesSlash", "Same-mint pool is fee-dominated: alpha_bps\xB7min_stake/10_000 must cover MIN_SLASH_FEE_RATIO\xB7fee_per_juror.")
|
|
8523
8612
|
};
|
|
8524
8613
|
|
|
8525
8614
|
// src/methods/stakeFlow.ts
|
|
@@ -8611,6 +8700,7 @@ __name(disputePhase, "disputePhase");
|
|
|
8611
8700
|
|
|
8612
8701
|
// src/queries.ts
|
|
8613
8702
|
import {
|
|
8703
|
+
getAddressEncoder as getAddressEncoder35,
|
|
8614
8704
|
parseBase64RpcAccount
|
|
8615
8705
|
} from "@solana/kit";
|
|
8616
8706
|
function discriminatorToBase64(d) {
|
|
@@ -8655,6 +8745,45 @@ async function findAllPendingUpdates(rpc, config) {
|
|
|
8655
8745
|
);
|
|
8656
8746
|
}
|
|
8657
8747
|
__name(findAllPendingUpdates, "findAllPendingUpdates");
|
|
8748
|
+
var SAS_PROGRAM_ID2 = "22zoJMtdu4tQc2PzL74ZUT7FrwgB1Udec8DdW4yw4BdG";
|
|
8749
|
+
var SAS_CREDENTIAL_OFFSET = 33;
|
|
8750
|
+
var SAS_SCHEMA_OFFSET = 65;
|
|
8751
|
+
var SAS_WALLET_OFFSET = 101;
|
|
8752
|
+
function addressToBase64(a) {
|
|
8753
|
+
return btoa(String.fromCharCode(...getAddressEncoder35().encode(a)));
|
|
8754
|
+
}
|
|
8755
|
+
__name(addressToBase64, "addressToBase64");
|
|
8756
|
+
async function findSasAttestation(rpc, binding, config) {
|
|
8757
|
+
const found = await rpc.getProgramAccounts(SAS_PROGRAM_ID2, {
|
|
8758
|
+
encoding: "base64",
|
|
8759
|
+
filters: [
|
|
8760
|
+
{
|
|
8761
|
+
memcmp: {
|
|
8762
|
+
bytes: addressToBase64(binding.credential),
|
|
8763
|
+
offset: BigInt(SAS_CREDENTIAL_OFFSET),
|
|
8764
|
+
encoding: "base64"
|
|
8765
|
+
}
|
|
8766
|
+
},
|
|
8767
|
+
{
|
|
8768
|
+
memcmp: {
|
|
8769
|
+
bytes: addressToBase64(binding.schema),
|
|
8770
|
+
offset: BigInt(SAS_SCHEMA_OFFSET),
|
|
8771
|
+
encoding: "base64"
|
|
8772
|
+
}
|
|
8773
|
+
},
|
|
8774
|
+
{
|
|
8775
|
+
memcmp: {
|
|
8776
|
+
bytes: addressToBase64(binding.juror),
|
|
8777
|
+
offset: BigInt(SAS_WALLET_OFFSET),
|
|
8778
|
+
encoding: "base64"
|
|
8779
|
+
}
|
|
8780
|
+
}
|
|
8781
|
+
],
|
|
8782
|
+
commitment: config?.commitment
|
|
8783
|
+
}).send();
|
|
8784
|
+
return found.length > 0 ? found[0].pubkey : null;
|
|
8785
|
+
}
|
|
8786
|
+
__name(findSasAttestation, "findSasAttestation");
|
|
8658
8787
|
|
|
8659
8788
|
// src/domain.ts
|
|
8660
8789
|
import { sha256 as sha2563 } from "@noble/hashes/sha256";
|
|
@@ -8807,6 +8936,9 @@ export {
|
|
|
8807
8936
|
NO_RULING,
|
|
8808
8937
|
NO_VOTE,
|
|
8809
8938
|
ROUND_DISCRIMINATOR,
|
|
8939
|
+
SAS_ATTESTATION_DISCRIMINATOR,
|
|
8940
|
+
SAS_ATTESTATION_MIN_LEN,
|
|
8941
|
+
SAS_PROGRAM_ID,
|
|
8810
8942
|
SDK_NAME,
|
|
8811
8943
|
SDK_VERSION,
|
|
8812
8944
|
SUBACCORD_DISCRIMINATOR,
|
|
@@ -8851,6 +8983,7 @@ export {
|
|
|
8851
8983
|
createAccordMethods,
|
|
8852
8984
|
createDispute,
|
|
8853
8985
|
createSubaccord,
|
|
8986
|
+
decodeSasAttestation,
|
|
8854
8987
|
decodeScalarVote,
|
|
8855
8988
|
disputePhase,
|
|
8856
8989
|
disputeSeeds,
|
|
@@ -8901,6 +9034,8 @@ export {
|
|
|
8901
9034
|
findPendingUpdatePda,
|
|
8902
9035
|
findProgramIdentityPda,
|
|
8903
9036
|
findRoundPda2 as findRoundPda,
|
|
9037
|
+
findSasAttestation,
|
|
9038
|
+
findSasAttestations,
|
|
8904
9039
|
findSubaccordPda,
|
|
8905
9040
|
getAccordStateDecoder,
|
|
8906
9041
|
getAggregationCodec,
|